【发布时间】:2013-07-23 15:49:15
【问题描述】:
我有一个基于 JPA (Hibernate)、Spring 和 CXF 的 Web 服务应用程序。 在事务性业务方法之后,我面临一些延迟加载异常(因为我需要在 rpesentation 层中呈现一些额外的 bean),我想尝试一下 OpenSession/EntityManagerInView 模式。
请不要争论这个选择,我们只是试一试。
问题在于,由于我使用的是 CXFServlet,而不是标准 Spring Servlet,因此我无法在 web.xml 中使用 OpenEntityManagerInViewFilter。
我不能使用 OpenEntityManagerInViewInterceptor 作为 WebRequest 拦截器(并且不适用于 CXF 拦截器/过滤器)。
最后我知道了HibernateInterceptor,这是一个将任何方法包装到会话中的 AOP 代理。但仍然:这个是针对 Hibernate API,而不是 JPA API(我使用的是 EntityManagerFactory,而不是 SessionFactory)。
那么,你知道吗:
- 用于 JPA API 的 HibernateInterceptor(EntityManagerInterceptor?)
- 一种将 Spring WebRequestInterceptor 改编为 JAX-RSfilter 的方法?
- 还有其他解决方案吗?
提前感谢您的帮助。
【问题讨论】:
标签: spring hibernate jpa transactions cxf