Hibernate中封装session(静态单例模式)

先做一个类,把session封装起来,等用的时候可以直接调用。

public class HibernateUtil {
    //线程锁,保证线程安全,在用的时候只有这一个session,别人无法处理
    private static final ThreadLocal<Session> threadLock = new ThreadLocal<Session>();
    //定义常量是为了实现单例,不允许更改赋值
    private static final SessionFactory factory = buildFactory();
    //写一个buildFactory方法
    private static SessionFactory buildFactory() {
        //读取hibernate.cfg.xml配置,加载数据库和实体类
        Configuration cfg = new Configuration().configure();
        return  cfg.buildSessionFactory();
    }
  //获取session
public static Session getSession(){ //获取上面thredlock中的session Session session = threadLock.get(); //如果thredlock中是空的就新建一个session if(session ==null){ session = factory.openSession(); //将新建的session放入thredlock中 threadLock.set(session); } return session; } //close的方法 public static void closeSession(){ //先获取thredlock中的session Session session = threadLock.get(); //如果不是空,就把session关闭,并且把thredlocal清空 if(session !=null){ session.close(); threadLock.set(null); } } }

 然后就可以使用这个封装的session

    @Test
    public void testSelect(){
        Session session = null;
        try{
            //有了之前封装的方法  我们就可以直接用.getsession得到一个session
            session = HibernateUtil.getSession();
            //差kc表中所有的
            List<Kc> list = session.createQuery("from Kc").getResultList();
            for(Kc c : list){
         System.out.println(c.getWzName()
+" "+c.getPrice()+" "+c.getUnit()); } } catch(Exception e){ e.printStackTrace(); } finally{ HibernateUtil.Closesession(); } } }

这里查完所有的后,打印了物资名称,单价,和单位

 

转载于:https://www.cnblogs.com/liyh123/p/6520264.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值