我正在开发一个使用Spring的Hibernate OpenSessionInViewFilter
以及AOP版本的项目 - OpenSessionInterceptor
。 AOP拦截器配置为Quartz作业,以便在作业执行期间提供与Web请求期间相同的便利。
现在,我将这个项目从原生Spring / Hibernate ORM迁移到Spring JPA,Hibernate作为提供者。虽然Spring ORM提供了OpenEntityManagerInViewFilter
(与Session Filter基本相同),但没有OpenEntityManagerInterceptor
或类似的东西。我无法弄清楚这里最好的方法是什么,所以问题是:
我应该编写自己的拦截器和/或摆弄SharedEntityManager
类,还是有其他方式?
注意:该项目现在使用Spring 4.0,JPA 2.1和Hibernate 4.3构建。
答案 0 :(得分:3)
Spring OpenEntityManagerInViewInterceptor
为JavaDoc suggests。如果EntityManager
的范围不受请求限制,通常的方法是构建获得@Transactional
注释的粗粒度组件,因为这会将EntityManager
“绑定”到范围交易。