【发布时间】:2015-04-11 16:27:34
【问题描述】:
我在我的项目中引入了HibernateTransactionManager,因为我们需要对一些服务方法使用事务。我还遵循了将 SessionFactory 注入 DAO 层而不是实现 HibernateDaoSupport 的最佳实践。
现在在一些未使用 @Transactional 注释的读取方法中出现错误:
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
我知道如何解决它,只需在整个地方添加@Transactional。但是我的同事们担心性能。还应该阅读以下方法:
return sessionFactory.getCurrentSession().createCriteria(MyClass.class).add(Restrictions.eq("color", color)).addOrder(Order.asc("createDate")).list();
用@Transactional 注释?
我也读过这篇文章Some clarification about Spring @Transactional annotation on a method,不鼓励在 DAO 层使用这个注释,所以我看不出解决这个问题的最佳实践是什么并且在读取方法上有良好的表现。
非常感谢您的帮助!
【问题讨论】:
标签: java spring performance hibernate transactions