package org.cric.util;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory factory=null;
//静态方法,只实例化一次,因为SessionFactory重量级,每个SessionFactory对应一个数据库,包含这个数据库的全部信息
//单实例!
static{
try{
Configuration cfg=new Configuration().configure();
factory=cfg.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
//获取Session 对象
public static Session getSession(){
return factory.openSession();
}
//获取SessionFactory对象
public static SessionFactory getSessionFactory(){
return factory;
}
//因为Session 不是线程安全的,所以需要关闭
public static void closeSession(Session session){
if(session!=null){
if(session.isOpen()){
session.close();
}
}
}
//封装save方法
public static Integer save(Object object){
Integer status=0;
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Serializable serializable=session.save(object);
status=serializable.hashCode();//序列化转化成Integer类型
tr.commit();
return status;
}
catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装update方法
public static Integer update(Object object){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
session.update(object);
tr.commit();
return 1;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装delete方法
public static Integer delete(Object object){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
session.delete(object);
tr.commit();
return 1;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装get方法
public static Object get(Class<?> clazz,Integer id){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Object obj=session.get(clazz, id);
tr.commit();
return obj;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装find方法
public static List<?> find(String HQL){
Session session=null;
Transaction tr=null;
List<?> list=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Query query=session.createQuery(HQL);
list=query.list();
tr.commit();
return list;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
}
封装HibernateUtil对象
最新推荐文章于 2017-11-01 15:22:34 发布