我們現在通常用的開發層次都是 頁面-〉Action -〉Serice -〉Dao -〉DB
Service中進行業務處理
Dao中進行和數據庫相關的一些CUID處理
下面就出現了一個比較困擾我的問題 比如一個簡單的例子,我要取一個員工Employee
的信息到頁面,我要調用 通過Action 調用 Service的 loadEmployee(...) 的方法
然后在 Dao 中調用 loadEmployee(...) 方法 , 我的困惑就是Entity和VO 到底各自
負責什么事情。
我考慮了3種情況:
1、load方法中的參數是比如這樣的 (String employee, int age ... )
?Service中 返回的是 VO 到頁面
?Dao中 返回 Entity
?
?Serivce中的方法大概這樣寫
?
?public EmployeeBean loadEmployeeBean(String employee, int age ... ) {
??EmployeeEntity employeeEntity = employeeDao.loadEmeployee(String employee,
int age ... );
??... 屬性Copy ...
??return employeeBean;
?}
2、load方法中的VO是比如這樣的 Service 中參數是 (EmployeeBean employeeBean) Dao中的參數是
(EmployeeEntity employeeEntity)
?其他同方法1
3、第三種方法的參數傳遞方式和第二種一樣但是 Dao 返回的不是一個Entity 而是一個VO
?public EmployeeBean loadEmployeeBean(EmployeeBean employeeBean) {
??EmployeeBean employeeBean = employeeDao.loadEmeployee(EmployeeBean
employeeBean);
??... 邏輯操作 ...
??return employeeBean;
?}
第一種情況參數固定很難擴展
第二種情況Dao 返回Entity 把Entity 暴露在 Service 下 并且要繁瑣的 properties Copy 操作
覺得很不爽 有人會說用BeanUtils 但是如果屬性類型不一樣的話很麻煩 多表操作更麻煩
我把第三種情況在詳細的描述一下
其實這幾種情況的主要差別就是 參數 和 返回值
第三種情況中? Service? 和 Dao 中傳入的 參數 和 返回值 都是 VO 對象
參數是VO的好處就是 可以 在不用改變方法的情況下 增加 查詢條件 當然減少也可以
返回對象是VO的好處就是 多表查詢 返回 某些字段 可以封裝在VO對象中 這樣取值比較方便
我個人比較傾向于 第三種情況
不知道各位有何高見
posted on 2006-12-02 02:11
IT Space 閱讀(2045)
評論(4) 編輯 收藏