论坛首页 Java企业应用论坛

在Service里直接玩iBATIS,为iBATIS添个贴吧

浏览 11068 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-01  
QuakeWang 写道
longrui 写道

老要包装Map是比较烦人,可以通过实现自己的查询模板或写自己的数据结构实现:

可以用varargs来做简化,还有List也是比较常用:
QMap(Object... parameters)
QList(Object... parameters)

List list = getIbatisTemplate().queryForList("queryStr", new QMap("name", "名字", "age", 18));


太帅了~~
0 请登录后投票
   发表时间:2009-04-01  
iBATIS  好多人推荐这个 不知道好用吗!
0 请登录后投票
   发表时间:2009-04-01  
IBATIS 好用的 挺轻便的 不过MAP老要封装很麻烦 像看看大家怎么弄的
0 请登录后投票
   发表时间:2009-04-03   最后修改:2009-04-03
QuakeWang 写道
有了Hibernate/iBatis这些强大的ORM以后,确实不用再写一个DAO了,在Service里面直接用。
单元测试可以用内存数据库来直接做。
而说考虑到ibatis转化为hibernate,即便你用DAO,也要大范围的改动,service里面这点引用的改动可忽略不计了。


同意以上观点,基本上我们团队中在使用了Hibernate和iBATIS后都不写DAO了(最多包装个通用的DAO来表示还有DAO这一层)。大多数DAO所要实现的操作都是比较简单的CRUD,重复代码太多,而且意义也不大。当然如果真的碰到有换框架的一天,那再来对Service层进行重构吧。

以前考虑过定义一个可以切换于各种持久化方案的通用DAO接口,貌似不太可能,毕竟hibernate/iBAITS/jpa的调用方式都不一样。能够统一的只有一小部分api。
0 请登录后投票
   发表时间:2009-04-03  
thinblue 写道
IBATIS 好用的 挺轻便的 不过MAP老要封装很麻烦 像看看大家怎么弄的

我使用的是Struts2,在需要Map时,我会使用如:Map mapBean = BeanUtils.describe(br);的写法,把DomainBean对象br的不为空的属性弄到Map里。不知道其他人怎么弄的。
0 请登录后投票
   发表时间:2009-04-03  
wang19841229 写道
您这么写如果有一天业务变化把原有的持久化策略从ibatis变为hibernate那您所有的service都要修改,因为所有的service都引用了spring 的ibatis的模板。

业务不会关心IT的底层实现,持久成你用jdbc、ibatis还是hibernate,数据库你用mysql、oracle还是db2的,他们才不关心。业务操作、业务流程实现没有才是他们关心的问题。持久层是会变,但是变的可能性有多大呢?我觉得概率很小(估计在1%以下)。
0 请登录后投票
   发表时间:2009-04-07  
省去DAO接口,直接写实现类还是比较方便的。
没必要整到service层
0 请登录后投票
   发表时间:2009-04-08  
sw1982 写道
省去DAO接口,直接写实现类还是比较方便的。
没必要整到service层

我们现在就是这样的`` 呵呵
0 请登录后投票
   发表时间:2009-04-08  
楼主不是开玩笑吧,在很久以前是没有DAO层的概念的,多年后有人总结出来了,现在你又要改回去?有句话叫“存在即合理”,楼主你太片面了
0 请登录后投票
   发表时间:2009-04-09  
netfork 写道
可惜目前iBATIS的SqlMapClientTemplate类不支持泛型,要不然,可能就更好一些了。



自己再做一层包装就行了吧。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics