hibernate的一些操作

//MySessionFactory的构成;

public class MySessionFactory {
private static SessionFactory factory;

//为了防止多个线程中同时拿到一个session对象,采取ThreadLocal锁的方式.
private static ThreadLocal<Session> tl;

static{
	Configuration config = new Configuration().configure();
	factory = config.buildSessionFactory();
	//实例化线程本地变量
	tl = new ThreadLocal<Session>();
}

public static Session getSession(){
	//拿session之前首先看看自己的线程本地变量中是否存在连接,如果有直接从线程本地变量中取,没有再去从连接池中获得.
	//ThreadLocal线程本地变量的get方法可以从本地变量对象中获得保存并锁定的对象.
	Session session = tl.get();
	if(session == null){
		//本地变量中没有连接,从连接池获得
		session = factory.openSession();
		//从连接池获得连接后,注意需要装入线程本地变量中进行保存并锁定.
		tl.set(session);
	}
	return session;
}

public static void close(){
	//关闭连接时,首先从线程本地变量中获得连接对象
	Session session = tl.get();
	//判断是否从本地变量中获得了连接
	if(session != null){
		//如果存在连接,关闭
		session.close();
		//清空本地线程变量中已经关闭无法再使用的连接对象session
		tl.set(null);
	}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值