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();
            }
        }
        
    }
  • 相关阅读:
    node-log4js3.0.6配置
    MySQL命令学习
    64位 windows10,MYSQL8.0.13重置密码(忘记密码或者无法登录)
    64位 windows10,安装配置MYSQL8.0.13
    vscode切换界面布局
    一个网站同时监听两个端口
    javascript +new Date()
    es6 解构
    react列表数据显示
    访问禁止,检测到可疑访问,事件编号
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6512500.html
Copyright © 2011-2022 走看看