2012-05-24 38 views
0

民間,查看中的開放會話會話每請求模式有什麼區別? 我正在使用Spring MVC和Hibernate。 我不是在說這裏的交易分界,因爲每個請求的會話似乎是1個會話:1個tx。但是對於OSIV,有1個會話,然後有多個事務(每個服務調用1個)。有人可以澄清這一點嗎?會議每請求和Open Sesson查看模式

回答

2

OSIV的確定特性並不是真正的多重事務,而是在呈現視圖時會話保持打開狀態。在JBoss wiki上的This page說明了這種設置(儘管從web層手動管理交易不是我的一杯茶......對於更多預包裝的東西,請參閱Spring's OpenSessionInViewFilter)。

有一個會話,一個事務。這是stil OSIV,因爲所有的工作,包括渲染視圖都在會話範圍內完成。請注意,即使您將所有服務方法標記爲@Transactional(或XML等價物),它們仍將參與同一單個事務,除非它們特別要求啓動新的事務。

因此,OSIV可以是一種會話每請求,它們有時可以互換使用。但是我想說,如果您確定在查看渲染之前關閉單個會話,那麼可以爲每個請求實現提供一個不是OSIV的會話。

+0

是的,我知道OSIV並不嚴格基於我提到的tx.logic。我只是試圖解釋一下在正常的Spring MVC應用程序中可能會出現什麼樣的典型流程。我使用你提到的Spring的OSIV過濾器。我喜歡你最後一段。澄清了一下。 – Achow