package cn.itcast.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static SessionFactory sessionFactory;
/**
* 私有的构造方法(不希望被实例化)
*/
private HibernateUtil(){}
static{
// 实例化Configuration,加载Hibernate默认的配置文件
//如果hibernate配置文件不是默认的文件名,则需要再configure("filename");
Configuration config=new Configuration().configure();
// 创建SessionFactory对象
sessionFactory=config.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
/**
* 根据主键查找对象
* @param objClass
* @param id
* @return
*/
public static Object getById(Class objClass,int id){
Object obj=null;
Session session=null;
try {
session=HibernateUtil.getSession();
obj=session.get(objClass, new Integer(id));
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sessionClose(session);
}
return obj;
}
/**
* 保存对象到数据库中
* @param obj
*/
public static void add(Object obj){
Session session=null;
try {
session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.save(obj);
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sessionClose(session);
}
}
/**
* 在数据库中更新对象
* @param obj
*/
public static void update(Object obj){
Session session=null;
try {
session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.update(obj);
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sessionClose(session);
}
}
/**
* 在数据库中删除对象
* @param obj
*/
public static void delete(Object obj){
Session session=null;
try {
session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.delete(obj);
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sessionClose(session);
}
}
/**
* Session对象关闭方法
* @param session
*/
public static void sessionClose(Session session){
if(session!=null){
session.close();
}
}
}
这是一个Hibernate的工具类,可能功能还不够完善,以后还有待改进。