sessionfactory单例模式

在完成session获取的过程中,主要涉及Configuration、SessionFactory、Session接口。

获取的代码:

SessionFactory sessionFactory = config.buildSessionFactory();

SessionFactory接口:负责初始化Hibernate,并负责创建Session对象。这里用到了工厂模式,但是SessionFactory并不是轻量级的,因为在一般情况下,一个项目通常只需要一个SessionFactory就足够了,当需要操作多个数据库时,可以定义多个SessionFactory。

具体代码如下:

package com.zrrd.wangziq.controller;  
  
import org.springframework.context.annotation.Configuration;  
  
  
public class HibernateUtils {  
    //声明一个私有的静态final类型的Configuration  
    private static final Configuration config;  
    //声明一个私有的静态final类型的SessionFactory对象  
    private static final SessionFactory factory;  
    //通过静态代码块构建SessionFactory  
    static{  
        config=new Configuration().configure();  
        factory=config.buildSessionFactroy();  
    }  
    //提供一个公有的静态方法供外部获取,并返回一个Session对象  
    public static Session getSession(){  
        return factory;  
    }  
} 
为每一个用户访问都创建一个Session,避免了不同用户之间的Session冲突;
在每一次程序运行的周期内,共用一个Session,既可以避免资源浪费,有提供了资源的共享,让一次运行的多个操作共用一个Session资源,为事务的操作也提供了基础。
public class TestDemo {    
    @Test    
        public void selectStu(){    
              Session session = HibernateUtils.getSession();    
              Transaction t = session.beginTransaction();    
              Student s = (Student) session.get(Student.class,2);    
              System.out.println(s.toString());    
        }    
}

这样会减少sessionfactory的负担,因为每个session对象只会创建一次,避免了sessionfactory的多次加载。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值