goldrain

          金色雨點

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            37 隨筆 :: 2 文章 :: 239 評論 :: 0 Trackbacks
          使用Hibernate+Spring進行后臺開發,數據庫操作dao層代碼大多比較雷同,可以考慮用模板加以實現.
          ?
          eclipse的模板功能非常強大,可以添加自定義的模板,自動生成dao層的方法代碼,
          做法是:到windows - preferences - java - editor - templates下添加模板,可起名為dao
          ?
          貼出我的項目中的模板代碼
          ?

          ?public Long add${ho}(Jacker${ho} ho){
          ??Date curr = new Date();
          ??ho.setCreatedStamp(curr);
          ??ho.setLastUpdatedStamp(curr);
          ??return? (Long)add(ho);
          ?}
          ?
          ?public Jacker${ho} get${ho}(Long id){
          ??return (Jacker${ho})getHibernateTemplate().get(Jacker${ho}.class,id);
          ?}
          ?
          ?public void update${ho}(Jacker${ho} ho){
          ??ho.setLastUpdatedStamp(new Date());
          ??update(ho);
          ?}
          ?
          ?public void delete${ho}(Jacker${ho} ho){
          ??delete(ho);
          ?}

          ?public void delete${ho}List(List<Jacker${ho}> hos){
          ????? if(hos!=null)
          ??????? for(Jacker${ho} ho : hos){
          ???delete${ho}(ho);
          ??}
          }

          以上代碼僅供參考,細節可根據項目做適當改動.

          添加好模板后,怎么用就比較初級了,這里就不多說了.

          eclipse 3.2.0

          posted on 2007-02-27 13:59 goldrain 閱讀(8558) 評論(8)  編輯  收藏

          評論

          # re: 使用eclipse模板生成dao層代碼 2007-02-27 16:15 交口稱贊
          呵呵
          我自己寫了一個eclipse插件

          可以基本上全自動生成PO+DAO+配置文件+自動建表  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-27 17:05 goldrain
          @交口稱贊
          很強啊,我只是盡量使用已有的工具.  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-27 17:17 hucq
          @交口稱贊
          能分享下你的插件嗎  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-27 17:41 Dustin Tang[匿名]
          既然大同小異, 說明代碼中有"重復"的"壞味道".
          自動生成可不是什么解決之道. 用BaseDAO就可以解決問題. 至于方法名,可以統一為 addEntity deleteEntity...
          有人可能認為addEntity不夠表達特殊的含義, 但是別忘了方法調用的場景:
          bookDAO.addEntity(Book book)和bookDAO.addBook(Book book)會有區別嗎?  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-27 21:14 lang
          同意Dustin Tang  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-28 15:35 goldrain
          @Dustin Tang[匿名]
          不完全同意你的觀點,addEntity放到BaseDao中可以,但針對不同的PO,還是需要寫出單獨的dao方法的,所謂大同小易,不同的entity的持久化處理總有細微的差別的,比如字段唯一性校驗,字段的缺省值設置,再比如有的entity刪除要附帶刪除子記錄等等,在我的項目中這些都可以放到dao代碼中做的,各個entity各不相同,否則的話都籠統的用BaseDao解決,Dao層豈不是沒有存在的必要了  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-28 17:36 Dustin Tang[匿名]
          @goldrain
          不同的PO請看JDK5.0的New Feature:Generics.
          至于特殊的操作請用Override.

          唯一性校驗都可以放到BaseDAO里面去, 刪除子記錄也不算特殊操作(如果你用的是Hibernate的話).

          很多DAO層的確是不需要的, 如果你的邏輯不是太復雜的話.

          總之,你的自動生成沒有存在的必要, 可以自動生成就代表一定程度的重復.而且這種重復是可以消除的.  回復  更多評論
            

          # re: 使用eclipse模板生成dao層代碼 2007-02-28 20:44 goldrain
          @Dustin Tang[匿名]

          我舉的例子只是想說明不同的PO數據庫操作總有差別
          至于這些差別,還有很多,比如:刪除記錄,有的需要記錄歷史表
          有的數據不重要自然不需要;
          再如,有時添加一條記錄,可能其編號字段是固定格式的序列號,自然有的記錄不需要這種編號;
          有的表需要記錄創建時間,更新時間,有的則沒有必要記錄;
          還有我上面說過的對字段值為null時的缺省值設定;
          等等
          如果不充分利用dao層來加以區分這些PO,只能說你的業務還不夠復雜而已

          另外,我對你說的一些解決方法也挺有興趣,能說說具體怎么做么,有沒有連接或代碼供參考
            回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 定陶县| 团风县| 台江县| 当雄县| 郸城县| 屏山县| 洛隆县| 左云县| 建平县| 新蔡县| 黎平县| 当阳市| 张家界市| 卓资县| 弥渡县| 闵行区| 河间市| 宜君县| 张家界市| 西贡区| 淅川县| 北海市| 宿迁市| 富民县| 右玉县| 张家港市| 宣威市| 华宁县| 台中县| 任丘市| 淮南市| 武夷山市| 诸城市| 天全县| 中山市| 拉萨市| 唐海县| 隆昌县| 扶风县| 衡阳市| 南阳市|