OpenSessionInViewFilter 說明與配置

來源:互聯網
上載者:User

 

Spring為我們解決最讓人頭痛的難題之一,Hibernate的Session的關閉與開啟問題。
Hibernate 允許對關聯對象、屬性進行消極式載入,但是必須保證消極式載入的操作限於同一個 Hibernate Session 範圍之內進行。如果 Service 層返回一個啟用了消極式載入功能的領域對象給 Web 層,當 Web 層訪問到那些需要消極式載入的資料時,由於載入領域對象的 Hibernate Session 已經關閉,這些導致消極式載入資料的訪問異常。而Spring為我們提供的OpenSessionInViewFilter過濾器為我們很好的解決了這個問題。OpenSessionInViewFilter的主要功能是使每個請求過程綁定一個
Hibernate Session,即使最初的事務已經完成了,也可以在 Web 層進行消極式載入的操作。OpenSessionInViewFilter 過濾器將 Hibernate Session 綁定到請求線程中,它將自動被 Spring 的交易管理員探測到。所以 OpenSessionInViewFilter 適用於 Service 層使用HibernateTransactionManager 或 JtaTransactionManager 進行交易管理的環境,也可以用於非事務唯讀資料操作中。

一、手動載入 如:

Hibernate.initialize(obj.getUser());//載入使用者物件

二、使用OpenSessionInViewFilter 配置解決消極式載入 如:

<!--OpenSessionInViewFilter 解決消極式載入問題-->          <filter>                  <filter-name>OpenSessionInViewFilter</filter-name>                  <filter-class>                           org.springframework.orm.hibernate3.support.OpenSessionInViewFilter                </filter-class>                  <!-- singleSession預設為true,若設為false則等於沒用OpenSessionInView -->                  <init-param>                          <param-name>singleSession</param-name>                          <param-value>true</param-value>                  </init-param>          </filter>          <filter-mapping>                  <filter-name>OpenSessionInViewFilter</filter-name>                  <url-pattern>/*</url-pattern>          </filter-mapping>            <!--Spring Context listener-->          <listener>                  <listener-class>                           org.springframework.web.context.ContextLoaderListener                   </listener-class>          </listener>    <!--讓spring知道交易管理的bean所在-->       <context-param>           <param-name>contextConfigLocation</param-name>           <param-value>/WEB-INF/applicationContext*.xml</param-value>       </context-param>   <!--struts 2.0 過濾器配置--><filter>        <filter-name>struts</filter-name>        <filter-class>    org.apache.struts2.dispatcher.FilterDispatcher   </filter-class></filter><filter-mapping>        <filter-name>struts</filter-name>        <url-pattern>/*</url-pattern></filter-mapping>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.