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需要手动关闭)

 

posted @ 2017-11-23 23:21  egu不要说话  阅读(316)  评论(0)    收藏  举报