HibernateSessionFactoryUtil
来源:互联网 发布:成都泰迪熊博物馆淘宝 编辑:程序博客网 时间:2024/06/08 01:01
手动创建session过程:
Configuration cfg = new Configuration().configure("/hibernate.cfg.xml");SessionFactory sf = cfg.buildSessionFactory();Session session = sf.openSession();Transaction t = session.beginTransaction();session.save(user);t.commit();session.close();
以下是自动创建session的过程:
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; public class HibernateSessionFactoryUtil {private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();private static Configuration configuration = new Configuration();private static org.hibernate.SessionFactory sessionFactory;private static String configFile = CONFIG_FILE_LOCATION;static {try {configuration.configure(configFile);sessionFactory = configuration.buildSessionFactory();} catch (Exception e) {System.err.println("%%%% Error Creating SessionFactory %%%%");e.printStackTrace();}}private HibernateSessionFactoryUtil() {}public static Session getSession() throws HibernateException {Session session = (Session) threadLocal.get();if (session == null || !session.isOpen()) {if (sessionFactory == null) {rebuildSessionFactory();}session = (sessionFactory != null) ? sessionFactory.openSession(): null;threadLocal.set(session);}return session;}/** * Rebuild hibernate session factory * */public static void rebuildSessionFactory() {try {configuration.configure(configFile);sessionFactory = configuration.buildSessionFactory();} catch (Exception e) {System.err.println("%%%% Error Creating SessionFactory %%%%");e.printStackTrace();}}/** * Close the single hibernate session instance. * * @throws HibernateException */public static void closeSession() throws HibernateException {Session session = (Session) threadLocal.get();threadLocal.set(null);if (session != null) {session.close();}}/** * return session factory * */public static org.hibernate.SessionFactory getSessionFactory() {return sessionFactory;}/** * return session factory * * session factory will be rebuilded in the next call */public static void setConfigFile(String configFile) {HibernateSessionFactoryUtil.configFile = configFile;sessionFactory = null;}/** * return hibernate configuration * */public static Configuration getConfiguration() {return configuration;}}
改进的操作代码明显简化了:
Session session = HibernateSessionFactoryUtil.getSession();Transaction t = session.beginTransaction();session.save(user);t.commit();HibernateSessionFactoryUtil.closeSession();
0 0
- HibernateSessionFactoryUtil
- HibernateSessionFactoryUtil.java(Hibernate工具类)
- HibernateSessionFactoryUtil类和封装了(增删改查)方法的HibernateTest类
- jsp页面头信息遍历
- 陈楚东-第一周计算“两个整数的最大公约数”程序和《算法概论》思维导图
- c++之const
- GCDAsyncSocket类库,IOS下TCP通讯使用心得
- linux2.6.31版本以后usb/devices输出信息使用usb-devices查看
- HibernateSessionFactoryUtil
- 《黑马程序员》 使用反射替换类中的变量的值
- C语言函数指针参数也是传值调用
- 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码
- 深度分析如何在Hadoop中控制Map的数量
- ARP逆过程——RARP协议流程
- 纯javascript实现广告的无缝滚动
- 通用乱码解决方案
- 分时系统