import java.io.Serializable;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public final class HibernateUtil {
private HibernateUtil(){}
private static SessionFactory sessionFactory;
//利用靜態代碼塊來獲得數據庫的連接
static{
Configuration cfg = new Configuration();
cfg.configure();
ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
sessionFactory = cfg.buildSessionFactory(sr);
}
//返回創建的SessionFactory對象
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
//返回Session對象
public static Session getSession(){
return sessionFactory.openSession();
}
//向數據庫增加一條記錄
public static void addUser(Object entity){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(entity);
tx.commit();
}catch(HibernateException e){
if(tx != null){
tx.rollback();
}
throw e;
}finally{
if(s!=null){
s.close();
}
}
}
//更新數據庫中的一條記錄
public static void update(Object entity){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
s.update(entity);
tx.commit();
}catch(HibernateException e){
if(tx != null){
tx.rollback();
}
throw e;
}finally{
if(s!=null){
s.close();
}
}
}
//刪除數據庫中的一條記錄
public static void delete(Object entity){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
s.delete(entity);
tx.commit();
}catch(HibernateException e){
if(tx != null){
tx.rollback();
}
throw e;
}finally{
if(s!=null){
s.close();
}
}
}
//根據記錄ID在數據庫中查詢一條記錄
public static Object getById(Class<?> clazz, Serializable id){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
Object obj = s.get(clazz, id);
tx.commit();
return obj;
}catch(HibernateException e){
if(tx != null){
tx.rollback();
}
throw e;
}finally{
if(s!=null){
s.close();
}
}
}
}
Hibernate工具類模版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.