package org.kevin.hibernate.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static{
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.out.println("初始化SessionFactory失败"+ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session getCurrentSession() throws HibernateException{
Session s = (Session)session.get();
if(s == null || !s.isOpen()){
s=sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException{
Session s = (Session)session.get();
session.set(null);
if(s!=null)
s.close();
}
}
使用:
public class TestStudent {
@Test
public void testStudent(){
Student s = new Student();
s.setName("北京");
s.setDescription("改进的Hibernate工厂类");
Session session = HibernateUtil.getCurrentSession();
Transaction tx = session.beginTransaction();
session.save(s);
tx.commit();
HibernateUtil.closeSession();
}
}
http://www.docin.com/p-234927721.html