国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
struts2 hibernate spring配置管理(二)——DAO層(一)

前面時間一直忙于趕項目,忽略了Struts2+hibernate+spring這個系列只是開了個頭,所以趕緊把以前的代碼翻出來,整理了一下,就接著講DAO層吧。

首先我們一起討論一下DAO層的設計,一般來說,有這樣兩種設計:

java 代碼
  1. public class ADAO(){   
  2.     public void create(A a){   
  3.        ....   
  4.     }   
  5.   
  6.     public void add(A a){   
  7.        ....   
  8.     }   
  9.   
  10.     public void delete(A a){   
  11.        ....   
  12.     }   
  13. }   
  14.   
  15. public class BDAO(){   
  16.     public void create(B b){   
  17.        ....   
  18.     }   
  19.   
  20.     public void add(B b){   
  21.        ....   
  22.     }   
  23.   
  24.     public void delete(B b){   
  25.        ....   
  26.     }   
  27.   
  28.     public void find(B b){   
  29.        ....   
  30.     }   
  31. }   
  32.   
  33. public class CDAO(C c){   
  34.     public void create(){   
  35.        ....   
  36.     }   
  37.   
  38.     public void add(C c){   
  39.        ....   
  40.     }   
  41.   
  42.     public void delete(C c){   
  43.        ....   
  44.     }   
  45.   
  46.     public void find(C c){   
  47.        ....   
  48.     }   
  49. }  

這里一共設計了三個實體DAO,分別為A,B,C,這樣的好處是對象的封裝思想比較好,每個實體DAO都有自己獨立的接口方法,但缺點也顯而易見,就是重復代碼太多太多。

再看第二種設計思想,以解決前面的缺點:

java 代碼
  1. abstract public class BaseDAO{   
  2.     public void create(Object o){      
  3.        ....      
  4.     }      
  5.      
  6.     public void add(Object o){      
  7.        ....      
  8.     }      
  9.      
  10.     public void delete(Object o){      
  11.        ....      
  12.     }   
  13.      
  14.   
  15. }   
  16.   
  17. public class ADAO entends BaseDAO{   
  18.     public void otherMethod(A a){   
  19.         .....   
  20.     }   
  21. }   
  22.   
  23. //other EntityDAO   
  24. .....   

使用這種設計思想,很好的解決了前面的瓶頸,但它也有缺點,破壞了面向對象的封裝性。

兩個設計思想,我們該如何取舍呢?其實如果了解泛型的話,就迎刃而解了,于是,就有了第三種解決方案如下:

java 代碼
  1. abstract public class DAO {      
  2.     public void create (T t)){
  3.        ...
  4.     }    
  5.       
  6.     public void delete (T t)){
  7.        ...
  8.     }    
  9.       
  10.     public void update (T t)){
  11.        ...
  12.     }    
  13.       
  14.     ...   
  15. }      
  16.      
  17. public class ADAO extends BaseDAO {      
  18.     public void otherMethod (A a){
  19.        ...
  20.     }    
  21. }   

注:關于泛型的知識,不是本文所要講的,如有不解,可查找有關文檔尋求幫助。

應該說,我個人比較喜歡第三種解決方案,由于這個項目使用了spring,于是大家應該又能想到讓它繼承于Spring的HibernateDaoSupport,提供分頁函數(shù)和若干便捷查詢方法,并對返回值作了泛型類型轉換。

經過討論后,大家應該有了比較好的思路了,具體代碼礙于篇幅,下一篇貼出。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
簡單SSH項目開發(fā)步驟
struts+spring +ibatis
Struts 2與Hibernate整合(入門)
基于全注解方式的SSH基礎框架(自認為拿得出手,歡迎拍磚,歡迎繼續(xù)完善)
請問什么是struts,Spring,Hibernate?
使用spring-mock進行dao集成測試
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服