GetCurrentSession和OpenSession

openSession效率低

每次请求,可能会执行多个功能,如果每个功能都是openSession,这样会反复的连接数据库,效率降低

例如

点击删除,会完成两个功能,每次都是打开一个新的session,浪费资源

id name info

1  abc    ..

删除 delete{ session = factory.openSession() session.delete(....) }

list(){ session = factory.openSession() list return list }

使用GetCurrentSession解决问题

为了解决上述问题,可以将第一次生成的session放入到当前线程中,以便后期使用方便。

一次请求对应的一次响应,二者是在同一个线程中。

hibernate.cfg.xml配置

修改session获取的方式

 

区别

1.getCurrentSession首先从当前线程中是否有可用的session如果有,直接拿来用。如果没有,新打开一个,并放入当前线程。 openSession每次都是打开一个新的session

2.getCurrentSession如果有事务,并且事务提交(即使是查找数据库数据也需要事务支持),session被关闭 openSession与事务没有关系(session需要手动关闭)

 

转载于:https://www.cnblogs.com/eguhu/p/7887583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值