【问题标题】:What is the Spring JPA EntityManager alternative to "OpenSessionInterceptor"?什么是 Spring JPA EntityManager 替代“OpenSessionInterceptor”?
【发布时间】:2014-07-28 19:08:40
【问题描述】:

我正在开发一个使用 Spring 的 Hibernate OpenSessionInViewFilter 以及 AOP 版本 - OpenSessionInterceptor 的项目。 AOP 拦截器是为 Quartz 作业配置的,以便在作业执行期间提供与 Web 请求期间相同的便利。

现在,我正在将这个项目从原生 Spring / Hibernate ORM 迁移到 Spring JPA,并使用 Hibernate 作为提供者。尽管 Spring ORM 提供了一个 OpenEntityManagerInViewFilter(它与会话过滤器基本相同),但没有 OpenEntityManagerInterceptor 或类似的东西。我无法弄清楚这里最好的方法是什么,所以问题是:

我应该编写自己的拦截器和/或摆弄SharedEntityManager 类,还是有其他方法?

注意:该项目现在使用 Spring 4.0、JPA 2.1 和 Hibernate 4.3 构建。

【问题讨论】:

    标签: spring-data-jpa spring-orm


    【解决方案1】:

    Spring 有一个OpenEntityManagerInViewInterceptor 作为JavaDoc suggests。如果EntityManager 的范围不应被请求绑定,通常的方法是构建粗粒度的组件以获得@Transactional 注释,因为这会将EntityManager“绑定”到事务的范围。

    【讨论】:

    • 谢谢!我不再需要拦截器(反正已经 3 年了)。在我目前的工作中,我们在需要时使用 @Transactional 注释,这似乎是最好的方法。
    猜你喜欢
    • 2020-11-26
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2014-05-16
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多