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 阅读(8496) 评论(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,只能说你的业务还不够复杂而已

另外,我对你说的一些解决方法也挺有兴趣,能说说具体怎么做么,有没有连接或代码供参考
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: