- hibernate.cfg.xml để cấu hình hibernate như chuỗi kết nối, mapping...
- HibernateUtils để tạo và quản lý SessionFactory cho ứng dụng
- Class java POJO gồm properties và getter, setter đại diện cho table trong chương trình java
- File mapping lớp java trên với table trong DB, có đuôi là hbm.xml. Cụ thể đây là file Product.hbm.xml
- cuối cùng là lớp Main dùng để chạy chươn trình. Câu lệnh sql:
CREATE TABLE PRODUCT( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(50) NOT NULL, PRICE INT NOT NULL, PRIMARY KEY(ID) )Tạo dự án maven với các dependencies sau:
vào phần src/main/resources tạo file cấu hình cho hibernate như sau: hibernate.cfg.xmlmysql mysql-connector-java 5.1.20 compile org.hibernate hibernate-core 4.0.1.Final compile org.slf4j slf4j-api 1.6.4 compile org.hibernate hibernate-entitymanager 4.0.1.Final compile
tạo class HibernateUtils có nhiệm vụ tạo ra một SessionFactory quản lý các session chung cho toàn bộ ứng dụng, lưu ý ở đây ta tạo biến private static SESSION_FACTORY và sử dụng phương thức getSessionFactory để chắc chắn rằng tại mọi thời điểm chỉ có 1 đối tượng SessionFactory được tạo ra.com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/abc root 1 org.hibernate.dialect.MySQLDialect thread org.hibernate.cache.NoCacheProvider false validate
import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory SESSION_FACTORY; public static SessionFactory getSessionFactory() { if (SESSION_FACTORY == null) { Configuration configuration = new Configuration(); SESSION_FACTORY = configuration.configure().buildSessionFactory(); } return SESSION_FACTORY; } }tạo lớp Product (POJO,Bean..) trong package domain gồm các thuộc tính và setter, getter
public class Product { private int id; private String name; private int price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public String toString() { return "Product[id: " + id + " name: " + name + " price: " + price + "]"; } }tạo file mapping class Product thành bảng PRODUCT trong database: Product.hbm.xml lưu ý package trong mapping
Cuối cùng là phương thức main để test
import java.util.ArrayList; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import vn.ds.domain.Product; import vn.ds.util.HibernateUtils; public class ProductController { public void save(Product product) { SessionFactory sf = HibernateUtils.getSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.save(product); session.getTransaction().commit(); session.close(); } public void update(Product product) { SessionFactory sf = HibernateUtils.getSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.update(product); session.getTransaction().commit(); session.close(); } public List read(){ SessionFactory sf = HibernateUtils.getSessionFactory(); Session session = sf.openSession(); List emps = session.createQuery("from Product").list(); session.close(); return emps; } public static void main(String[] args) { ProductController pc = new ProductController(); ArrayListproducts = (ArrayList ) pc.read(); for(Product p : products) { System.out.println(p.toString()); } } }