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