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