open session in view引起的事務問題
最近在做專案的時候用到了hibernate,由於lazyload的問題,接觸到了open session in view這種解決方案,但是實踐下來的效果卻讓我對這個方法產生了懷疑.
就拿session-per-request來舉例,也就是從request到response之間一直開啟session.按照官方教程,我們肯定需要一個filter或者interceptor,完成開啟和關閉session的任務.其它所有的方法都使用getCurrentSession來獲得當前的持久context.現在如果我們在表現層(例如Struts的Action)修改了一個物件,然後呼叫相應的service更新它.此時service丟擲了業務異常,需要我們取消之前的更新,這時如果不再Action中編寫事務控制的程式碼,剛才的更改是無法rollback的(因為此時所有物件都是persistent狀態,一旦更改後需要事務程式碼來回滾,而不像detached物件)
大家在這裡是怎麼解決的呢?我覺得這樣反而需要在表現層引入事務控制語句,反而把事情搞複雜了
就拿session-per-request來舉例,也就是從request到response之間一直開啟session.按照官方教程,我們肯定需要一個filter或者interceptor,完成開啟和關閉session的任務.其它所有的方法都使用getCurrentSession來獲得當前的持久context.現在如果我們在表現層(例如Struts的Action)修改了一個物件,然後呼叫相應的service更新它.此時service丟擲了業務異常,需要我們取消之前的更新,這時如果不再Action中編寫事務控制的程式碼,剛才的更改是無法rollback的(因為此時所有物件都是persistent狀態,一旦更改後需要事務程式碼來回滾,而不像detached物件)
大家在這裡是怎麼解決的呢?我覺得這樣反而需要在表現層引入事務控制語句,反而把事情搞複雜了
[該貼被power1128於2008-05-05 16:08修改過]
相關文章
- open session in viewSessionView
- goldengate中長事務引起的問題Go
- 請教open session in viewSessionView
- Open Session In View 探討SessionView
- PHP Session可能會引起併發問題PHPSession
- 關於open session in view,想在此請教!SessionView
- 主鍵,唯一性約束,不同session間未提交事務中的爭議性資料引起的問題。Session
- JDBC中事務的問題JDBC
- web service 的事務問題Web
- hibernate open session in view 丟擲異常解決方法SessionView
- 事務槽引起的 ORA-600 事件事件
- HIBERNATE的SESSION和事務Session
- 檢視引起阻塞的SessionSession
- JDBC中事務的問題之二JDBC
- 關於日誌事務的問題
- session的存取問題Session
- MySQL關於事務常見的問題MySql
- mysql併發事務的常見問題MySql
- 分散式系統中的事務問題分散式
- weblogic XA 事務配置問題Web
- 事務註解(@Transactional)引起的資料覆蓋故障
- 一個java加密引起的問題Java加密
- 軟體防火牆引起的問題防火牆
- 關於session的問題Session
- Hibernate的session問題Session
- Session的過期問題Session
- 微服務架構分散式事務管理問題微服務架構分散式
- session共享問題???Session
- 關於Spring事務回滾的問題Spring
- 異構環境的分散式事務問題分散式
- 軟體中事務處理問題!
- su - root could not open sessionSession
- session_max_open_filesSession
- 一個RESOURCE MANAGER引起的問題分析
- 故障分析 | show processlist 引起的效能問題
- 記憶體洩露引起的問題記憶體洩露
- 單機硬碟跳線引起的問題.硬碟
- 資料庫事務併發產生的問題以及事務的隔離級別資料庫