add hibernate support, and example

This commit is contained in:
Daniel
2024-10-24 19:27:54 +03:00
parent b19e989b87
commit ce4001680e
7 changed files with 234 additions and 3 deletions

View File

@@ -3,10 +3,14 @@ package io.github.lumijiez.example;
import io.github.lumijiez.core.config.ServerConfig;
import io.github.lumijiez.core.http.HttpServer;
import io.github.lumijiez.core.http.HttpStatus;
import io.github.lumijiez.example.daos.ProductDao;
import io.github.lumijiez.example.models.Product;
import io.github.lumijiez.logging.Logger;
public class Main {
public static void main(String[] args) {
ProductDao productDao = new ProductDao();
ServerConfig config = new ServerConfig.Builder()
.port(8080)
.keepAliveTimeout(30000)
@@ -25,6 +29,11 @@ public class Main {
res.sendResponse(HttpStatus.OK, "All good, lil bro");
});
server.GET("/products", (req, res) -> {
Product product = productDao.getProductById(5);
res.sendResponse(HttpStatus.OK, product.toString());
});
server.start();
}
}

View File

@@ -0,0 +1,78 @@
package io.github.lumijiez.example.daos;
import io.github.lumijiez.example.models.Product;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import java.util.List;
public class ProductDao {
public void saveProduct(Product product) {
Transaction transaction = null;
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
transaction = session.beginTransaction();
session.save(product);
transaction.commit();
System.out.println("Product saved successfully!");
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
public Product getProductById(int id) {
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
return session.get(Product.class, id);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@SuppressWarnings("unchecked")
public List<Product> getAllProducts() {
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
return session.createQuery("from Product").list();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public void updateProduct(Product product) {
Transaction transaction = null;
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
transaction = session.beginTransaction();
session.update(product);
transaction.commit();
System.out.println("Product updated successfully!");
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
public void deleteProduct(int id) {
Transaction transaction = null;
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
transaction = session.beginTransaction();
Product product = session.get(Product.class, id);
if (product != null) {
session.delete(product);
System.out.println("Product deleted successfully!");
}
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,70 @@
package io.github.lumijiez.example.models;
import jakarta.persistence.*;
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "product_code")
private String productCode;
@Column(name = "name")
private String name;
@Column(name = "category")
private String category;
@Column(name = "price")
private double price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Product [id=" + id + ", productCode=" + productCode + ", name=" + name +
", category=" + category + ", price=" + price + "]";
}
}