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();
            }
        }
        
    }
  • 相关阅读:
    CSS的三种定位方式介绍(转载)
    CSS背景颜色透明
    去除网页滚动条的方法
    es6
    Android复习
    caculater
    字符流
    字节流
    File类
    泛型继承
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6512500.html
Copyright © 2011-2022 走看看