Thứ Ba, 15 tháng 10, 2013

Ví dụ đơn giản về Hibernate

Xây dựng ví dụ đơn giản với Hibernate, bao gồm các file sau:
 - 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:

    
      mysql
      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
    
  
vào phần src/main/resources tạo file cấu hình cho hibernate như sau: hibernate.cfg.xml
        

  
  
    
   com.mysql.jdbc.Driver
   jdbc:mysql://localhost:3306/abc
   root
   
    
    
    1
    
        
    org.hibernate.dialect.MySQLDialect
    
    
    thread
    
    
    org.hibernate.cache.NoCacheProvider
    
    
    false
    validate
    
    
    
    
  

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.

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();
  ArrayList products = (ArrayList) pc.read();
  for(Product p : products) {
   System.out.println(p.toString());
  }
 }
}

1 nhận xét: