zoukankan      html  css  js  c++  java
  • 封装一个简单的Hibernate SessionFactory

    封装Hibernate框架中的session工厂   ,方便很多,免去了很多重复无用的代码

    package com.maya.test;
    import org.hibernate.*;
    import org.hibernate.cfg.*;
    
    public class HibernateUtil {
    
        private static final SessionFactory factory=buildFactory();        //建一个session工厂,调用方法构建出
        private static final ThreadLocal<Session> threadlock=new ThreadLocal<Session>();    //保证线程安全,构建一个线程锁,保证该线程未结束前不会被占用
    
        public static SessionFactory buildFactory() {    
            Configuration config=new Configuration();
            return config.buildSessionFactory();
        }
        
        public static Session getSession(){
            Session session=threadlock.get();//获取线程锁中的session
            if(session==null){                    //如果session是空的,打开一个session
                session=factory.openSession();
            }
            threadlock.set(session);    //将session放入线程锁中,保证该线程不会被干扰
            return session;
        }
        
        public static void closeSession(){        //该方法为关闭session,获取session 如果不为空,那么关闭,并且将线程锁更改为空
            Session session=threadlock.get();        
            if(session!=null){
                session.close();
                threadlock.set(null);
            }
        }
        
    }

    调用:

    package com.maya.test;
    import org.hibernate.*;
    import org.hibernate.cfg.*;
    
    import com.maya.model.Family;
    
    public class FamilyTest {
    
        public static void main(String[] args){
            
            Family fa=new Family();
            fa.setName("小明");
            fa.setFirm("召唤师峡谷");
            fa.setInfoCode("p003");
            
            Session session=HibernateUtil.getSession();//获取session
            try{
                session.beginTransaction();
                
                session.save(fa);
                
                session.getTransaction().commit();
            }
            catch(Exception e){
                session.getTransaction().rollback();
            }
            finally{
                HibernateUtil.closeSession();
            }
        }
        
    }
  • 相关阅读:
    SpringCloud------熔断与降级
    Linux中的defunct进程(僵尸进程)
    网站论坛收藏
    同步与阻塞,异步与非阻塞的区别
    Linux下批量杀掉筛选进程
    MapReduce运行原理和过程
    TF-IDF原理
    如何解决VMware 虚拟机不能铺满屏幕
    桥接和nat连接
    http: server gave HTTP response to HTTPS client & Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6512500.html
Copyright © 2011-2022 走看看