我正在使用Spring MVC和Hibernate开发Web应用程序,几个实体类,其中一些关联,并且有许多方法涉及多个实体的操作(例如一次更新两个实体),并且一些方法出现多次(比如getCurrentlyAuthenticatedUser()(我认为它应该缓存在Hibernate的第一级缓存中以避免冗余查询,所以应该在一个会话中调用)。目前,我在每个方法都有数据库操作的sessionFactory.getCurrentSession()。我读过会话对象不是线程安全的,应该在事务完成后立即关闭,但也应该关闭
<property name="hibernate.current_session_context_class">
thread
</property>
将会话绑定到上下文,因此getCurrentSession()获取的会话不需要关闭,所以我对使用getCurrentSession()感到困惑。我想实现最好的会话管理系统,以避免线程安全问题,并利用Hibernate一级缓存。