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修改過]
相關文章
- 事務槽引起的 ORA-600 事件事件
- 由分號引起的問題
- hibernate中的no session問題Session
- session共享問題???Session
- 分散式系統中的事務問題分散式
- MySQL關於事務常見的問題MySql
- mysql併發事務的常見問題MySql
- 事務註解(@Transactional)引起的資料覆蓋故障
- 一個RESOURCE MANAGER引起的問題分析
- 故障分析 | show processlist 引起的效能問題
- 微服務架構分散式事務管理問題微服務架構分散式
- mybatisplus 配置引起的生產問題 no bean ‘sqlSessionFactory‘MyBatisBeanSQLSession
- [轉帖]一個NAT問題引起的思考
- 一次跨域問題引起的思考跨域
- linux sed 命令引起的^M問題解決Linux
- 多執行緒引起的效能問題分析執行緒
- 資料庫事務併發產生的問題以及事務的隔離級別資料庫
- 自定義View的硬體加速問題View
- 資料庫事務併發問題----各種事務隔離下的情況資料庫
- 定時任務裡面事務不生效問題
- 一次inmemory丟失引起的問題分析
- 禁用 COOKIE 後如何訪問 SESSION 問題CookieSession
- 解決“su: cannot open session: Permission denied”Session
- 記一次 Redis 的事務引起的訊息佇列報錯Redis佇列
- virt-manager cannot open display問題
- MySQL8.0 view導致的效能問題MySqlView
- 專案中Spring事務失效的場景問題排查Spring
- MySQL事務的隔離級別與併發問題MySql
- 事務的隔離級別與所帶來的問題
- Spring基礎系列-Spring事務不生效的問題與迴圈依賴問題Spring
- 從線上當機引起的問題談開去
- 浮動元素引起的問題和解決辦法
- 浮動元素引起的問題和解決辦法?
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- Redis 事務不解決 SETNX DECR 過期問題Redis
- ORACLE懸疑分散式事務問題處理Oracle分散式
- 線上併發事務死鎖問題排查
- 03.Android之View原理問題AndroidView