ValueObject和DTO模式的一些疑問
ValueObject和DTO模式是常用的J2EE設計模式,模式所體現的不僅僅是一個設計技巧,更主要的是資料封裝的思想。最近我在做設計的時候卻對這個模式產生了一些疑問。
1. 對於位於持久層中的ValueObject,我是否應該限制他們的使用範圍?以Hiberante為例,由於ValueObject的生命週期的特性,我們不能把他們當作DTO在層間傳遞。但是,如果使用BeanUtils等工具複製一個的話,卻總是感覺有些浪費記憶體。如果是EntityBean則沒有這些疑問――很顯然我不能把EJB Bean例項當作DTO在層間傳遞――浪費就浪費吧。
2. 表現層的表單也需要物件封裝,在Struts中就是FormBean,但是在JSF中卻沒有這樣的概念,這樣一不小心我們就容易在表現層直接使用model中的物件,這也是不合理的。
3. Business層需要處理從表現層傳入的資料物件,這個資料物件也不能是FormBean或其他表現層VO,因為往往這些表現層VO直接反映的是表單資料,例如一個String格式的日期或者confirmedPassword,前者需要轉化為Date型別而後者則在Business層用不到,這些處理也應該在表現層處理(?)。
4. DAO層接收Business層的資料,這個資料應是Business層對錶現層資料的處理結果。
這樣一來,我們在處理一個case的時候就出現了3個ValueObject:
一個是表現層的用於反映頁面資料。
一個是Business層的,用於作為表現層和Business之間的DTO。
另一個是Domain&DAO層的,用於持久化的ValueObject。
這真是浪費呀!
我的疑問是,我是否可以省略其中的一個或多個?還是根據不同情況和需求靈活處理,各位大蝦是如何做的?
1. 對於位於持久層中的ValueObject,我是否應該限制他們的使用範圍?以Hiberante為例,由於ValueObject的生命週期的特性,我們不能把他們當作DTO在層間傳遞。但是,如果使用BeanUtils等工具複製一個的話,卻總是感覺有些浪費記憶體。如果是EntityBean則沒有這些疑問――很顯然我不能把EJB Bean例項當作DTO在層間傳遞――浪費就浪費吧。
2. 表現層的表單也需要物件封裝,在Struts中就是FormBean,但是在JSF中卻沒有這樣的概念,這樣一不小心我們就容易在表現層直接使用model中的物件,這也是不合理的。
3. Business層需要處理從表現層傳入的資料物件,這個資料物件也不能是FormBean或其他表現層VO,因為往往這些表現層VO直接反映的是表單資料,例如一個String格式的日期或者confirmedPassword,前者需要轉化為Date型別而後者則在Business層用不到,這些處理也應該在表現層處理(?)。
4. DAO層接收Business層的資料,這個資料應是Business層對錶現層資料的處理結果。
這樣一來,我們在處理一個case的時候就出現了3個ValueObject:
一個是表現層的用於反映頁面資料。
一個是Business層的,用於作為表現層和Business之間的DTO。
另一個是Domain&DAO層的,用於持久化的ValueObject。
這真是浪費呀!
我的疑問是,我是否可以省略其中的一個或多個?還是根據不同情況和需求靈活處理,各位大蝦是如何做的?
相關文章
- 橋模式的疑問模式
- 關於原型模式的看法和疑問原型模式
- Struts中ActionForm Bean和valueObject之間的問題ORMBeanObject
- DDD中Factory和Repository的一些疑問
- 工廠模式的疑問模式
- Composite模式的疑問模式
- 關於Proxy和Decorator設計模式的疑問設計模式
- composite模式疑問模式
- 對技術的一些疑問
- 檔案操作的一些疑問
- 雲端計算和網格計算的一些疑問
- LLM中詞向量的表示和詞嵌入的一些疑問
- 關於設計模式的疑問設計模式
- Chain of Responsibility模式疑問AI模式
- 關於Multiple Buffer Pools的一些疑問
- 設計模式之間互為陷阱的問題!為模式而模式的疑問!設計模式
- Elasticsearch 的一些常見疑問(持續更新中)Elasticsearch
- jmock 進行單元測試的一些疑問Mock
- Banq:看了你的設計模式:Observer,有些疑問設計模式Server
- 關於String內的indexOf方法的一些疑問Index
- 看Chain of Responsibility模式後得疑問AI模式
- maven的編碼問題、解決和疑問Maven
- [譯] 值物件(ValueObject)物件Object
- 設計模式系列·初探設計模式之王小二的疑問設計模式
- 關於字典和陣列的疑問陣列
- 關於DDD學習過程中的一些疑問
- 我的疑問
- 關於spring + ejb進行組合的一些疑問Spring
- POI-HSSF的一些疑難問題及解決方式
- Ibatis的疑問BAT
- 快取的疑問快取
- 對機器學習的一些懷疑理由機器學習
- 看JIVE原始碼的一點想法和疑問原始碼
- 孔乙己的疑問:單例模式有幾種寫法單例模式
- EditText選擇模式的一些問題模式
- 有些疑問
- 關於使用ThreadLocal管理資料庫連線的一些疑問thread資料庫
- JPetStore架構的疑問架構