什么是Spring JPA EntityManager替代“OpenSessionInterceptor”?

时间:2014-07-28 19:08:40

标签: spring-data-jpa spring-orm

我正在开发一个使用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构建。

1 个答案:

答案 0 :(得分:3)

Spring OpenEntityManagerInViewInterceptorJavaDoc suggests。如果EntityManager的范围不受请求限制,通常的方法是构建获得@Transactional注释的粗粒度组件,因为这会将EntityManager“绑定”到范围交易。