尋求ssh架構策略

johnsonhong發表於2009-02-24
現在網上流傳的很多ssh架構的系統,包括開源的一些應用系統,很多都用了openSessionInView模式,這樣一來,整個程式設計過程將大大簡化。session的生命週期在整個請求範圍內有效。我們可以把dao查詢出來的有延遲載入屬性的物件傳遞到頁面中去。
但是在頁面輸出內容多的情況下,filter會使用頁面緩衝區,這時filter的執行時間就和使用者的網速有關,因此openSessionInview有可能造成資料庫連線不能及時釋放的問題。

如果不使用openSessionInView,那麼我們一般會配置service層的方法使用事務,也就是說我們要在service層將所有延遲載入的屬性
都取出來,放到vo中去,這樣我們就需要建一系列的vo物件。嚴格的說,我們要在service層實現vo和po的轉換。

儲存資料時
action :獲取formbean,將formbean轉換為vo,save(vo)
service: vo->po,dao.save(po) (service層的curd方法都需要用vo做引數?)

查詢資料時
dao:getList()
servce:遍歷list,將list的每一個po轉換為vo,有時需要處理po中的明細屬性
(這樣vo和po的轉換將帶來很多額外的工作。有時感覺很多餘。)

另外有人提出用formbean作為vo,但是formbean是struts的東西,這樣vo就和struts耦合,感覺不合理,最重要的是formbean反應的是form提交時的屬性,但是查詢列表裡的物件可能和他的屬性並不一樣,除非構造一個冗餘的formbean來處理輸入和輸出。(vo和form的關係)

[該貼被admin於2009-02-24 14:57修改過]

相關文章