OpenEntityManagerInView和Hibernate的OpenSessionInView一样,服务端在接收到一个请求的时候开启EntityManager,在请求结束的时候才去关闭这个EntityManager,和JpaDaoSupport一起可以很好地工作。
使用OpenEntityManagerInView可以解决JPA延迟加载出现的LazyInitialize异常。如果不使用JPA的OpenEntityManagerInViewFilter,那么当使用玩getJpaTemplate().persist()或者remove()方法后,Spring就会自动关闭EntityManager,因此,你使用了延迟加载的对象加载属性的时候将会出现LazyInitialize异常。
OpenEntityManagerInViewFilter会把连接放到线程池里面,不是马上关闭。因此,在请求的过程当中,我们可以随时使用这个EntityManager。当请求结束之后才会关闭这个EntityManager。
不过在高并发的时候,EntityManager的生命周期会比较长(因为请求开始到请求结束这段时间长),EntityManager不会立刻关闭,导致连接池连接数占用的问题。因此高并发的系统最好不要使用OpenEntityManagerInView模式。
配置如下,在web.xml里面添加一个filter:
<filter>
<filter-name>jpaFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>jpaFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
为了解决这个问题,我们需要在`web.xml`中配置Spring的`OpenEntityManagerInViewFilter`。这个过滤器保持EntityManager在请求生命周期内开放,使得懒加载(lazy-loading)能在DWR调用结束后仍然有效。 配置`...
在 hopsuncms\WebRoot\WEB-INF\web.xml 中添加 openEntityManagerInViewFilter 过滤器,以便实现事物管理。 ``` <filter-name>openEntityManagerInViewFilter <filter-class>org.springframework.orm.jpa....
- 可以使用Spring的`OpenEntityManagerInViewFilter`,以确保在JSF请求处理期间保持数据库会话的开放状态。 5. **实体类和映射文件**: - 实体类是Java对象,它们代表数据库中的表。每个实体类通常有一个与之对应...
Spring通过其开放资源管理器(OpenEntityManagerInViewFilter)和事务管理器(PlatformTransactionManager)来支持JPA,使得在Spring应用中使用JPA变得简单而高效。 在Maven中,这个jar文件通常作为依赖项添加到...
1. **Open Session in View (OSIV)**:这是一种将Session保持开放到视图渲染完毕的设计模式,通常通过Spring的`OpenEntityManagerInViewFilter`或`OpenSessionInViewInterceptor`实现。但这可能导致长时间的数据库...
在JPA应用中,通常会有一个`OpenEntityManagerInViewFilter`,它确保在每个HTTP请求的上下文中都有一个活动的EntityManager。 `index.jsp`是Web应用的入口点,可能包含一些展示数据或交互的逻辑。在JPA应用中,你...
- **OpenEntityManagerInViewFilter**:此过滤器使得`EntityManager`能够在视图渲染过程中保持打开状态。这是Spring针对Hibernate的非JPA实现使用的`OpenSessionInViewFilter`的JPA版本。 #### 2. ...
OpenEntityManagerInViewFilter OpenEntityManagerInViewInterceptor OpenPersistenceManagerInViewFilter OpenPersistenceManagerInViewInterceptor OpenSessionInViewFilter OpenSessionInViewFilter ...
CRUD、翻页整合示范外,还涉及到了诸多企业开发时的细节:基于Restful 风格的 URL、使用 JPA 二级缓存、使用 @ResponseBody 注解完成 Ajax、把超链接转换为 DELETE 请求、OpenEntityManagerInViewFilter、修改状态下...
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter <filter-name>openEntity <url-pattern>/* ``` 报错二:no serializer 懒加载报错的第二个问题是no serializer报错。...