關於open session in view,想在此請教!

freeren發表於2008-04-23
最近公司開始了個新專案,使用的框架是Struts2+Spring2+Hibernate3,當然在這此我們不討論架構
主要是想討論一下關於hibernate提到的open session in view.在我們的專案中,我們的事務邊界是定界在service層。我們用hibernate的惰性載入,假設檢索出一個物件A,這個物件又關聯到另一物件B,那麼我們檢索完成對後就關閉了session,這時的B物件只是一個代理,並不是實際物件。那麼當我們在介面上想透過檢索出來的A物件再看B物件的屬性的話,是不是要再重開一個session,把A物件再放到另一個session中去呢?這樣如果應用open session in view,就不會出現這種脫管物件了,是吧,但這樣的話,這個session不是要一直開著嗎?這樣對效能是一種考驗吧。還有另一種做法是,檢索出來A物件的時候透過copyproperties()複製出另一個物件出來,這樣複製時就會把B物件的實際物件也檢索出來關聯到新的物件中去吧?但是這樣也有問題:如果A物件裡有n個類似於B物件的物件時又或者B物件還又關聯到其他物件時,這個複製出來的物件不是會越來越大?這也是個問題,是吧?不知道各們對我的問題是不是認同,如果認同有什麼解決方案?謝謝!

相關文章