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>
使用spring的OpenEntityManagerInView
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
SSH本地轉發與遠程轉發
huqian_blog
2018-08-27 19:32:42
hibernate3和spring3集成無法自動建表的原因
hqmsqcfy
2018-08-27 19:05:06
Spring的三種配置方式
tincox
2018-08-27 18:42:35
springMVC4.0+tiles2整合筆記
tincox
2018-08-27 18:42:34
百度雲存儲服務BCS教程使用java接入
tincox
2018-08-27 18:42:34
最新spring4.0.3+hibernate4.3.5整合
tincox
2018-08-27 18:42:34
From SSH Connection Build Xcode iPhone Project
bitren520
2018-08-27 18:20:32
關於Struts 2 攔截器參數丟失問題
RusonWong
2018-08-27 18:08:27
模擬Spring的讀取xml文件及注入
iteye_9662
2018-08-27 18:01:19
我的SSH集成(Spring 只集成Hibernate,Struts自己管理自己)
iteye_9662
2018-08-27 18:01:18
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
iteye_9662
2018-08-27 18:01:18
我的SSH集成(spring管理Action)
iteye_9662
2018-08-27 18:01:18
Hibernate幾個異常總結
lwj704684897
2018-08-27 16:29:37
DHTMLX grid界面不停刷新問題
lwj704684897
2018-08-27 16:29:35