论坛首页 Java企业应用论坛

用了mybatis,我认为不需要再要写DAO

浏览 66456 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-06-09  
我最近刚刚用mybatis完成了一个不大的小型项目,发现利用mybatis的mapper接口完全可以解决掉了原来所有在DAO里要做的事,所以这个项目里没有一个DAO,但是看到这里很多人还在讨论DAO啥的,所以有此疑问,大家还在什么样的需求上,我们还不得不去写DAO?除了分页,关于mybatis的分页,下面是我的理解:

我对于分页也是看了半天,发现mybatis并没有对于分页有很好的支持,提供所谓真正意义上的jdbc层的分页(类似hibenate那样),网上有人自己改写了mybatis的源码,把hibernate的dialect包copy过来利用,本来我也想这样做,那我必然要写自己的dao层了,和我原来的构想不符合,当时也很迷惑。
后来,直到我看到mybatis自己建议说,他建议用数据库底层自己来做分页,这个迷惑解开了,为什么一定要用jdbc层的分页,jdbc层的分页解决的问题不就是,跨数据库平台吗(比如oracle移动到mysql),但是如果只用mapper 接口的话,所有的数据库操作逻辑全部在xml里,如果真的有跨数据库平台的需求, 其实也是很方便的,大不了准备2套xml,何况这种情况并不多, 所以我直接在sql了做分页了。

这些只是我刚用mybatis一些理解,欢迎大家讨论。
   发表时间:2011-06-09  
如果是面向接口的,那也许就不需要DAO了
0 请登录后投票
   发表时间:2011-06-09  
mybatis是不要dao的,官方好像也推荐用mapper接口。
0 请登录后投票
   发表时间:2011-06-09   最后修改:2011-06-09
Mapper方便非常,
虽然说可以不需要DAO了,但会在你的业务逻辑里多次嵌入大量的

SqlSessionFactory.openSession();
session.getMapper(User.class);

等,从纯粹的意义上来说,这些代码还是隐藏在DAO里好一些。
而且使用了DAO,你可以更方便的更换数据访问层,不影响逻辑层的代码,理论上是这样子,但是一般项目定了使用MyBatis,也不会蛋疼的去换成Hibernate,JPA等
0 请登录后投票
   发表时间:2011-06-09  
啥叫你认为,官方就这么建议的
0 请登录后投票
   发表时间:2011-06-09  
事事没绝对,如果你数据访问层比较单一,以后也没多个数据访问层的问题,没有也合理。
0 请登录后投票
   发表时间:2011-06-09  
jorneyR 写道
Mapper方便非常,
虽然说可以不需要DAO了,但会在你的业务逻辑里多次嵌入大量的

SqlSessionFactory.openSession();
session.getMapper(User.class);

等,从纯粹的意义上来说,这些代码还是隐藏在DAO里好一些。
而且使用了DAO,你可以更方便的更换数据访问层,不影响逻辑层的代码,理论上是这样子,但是一般项目定了使用MyBatis,也不会蛋疼的去换成Hibernate,JPA等


请使用Mapper注入。
0 请登录后投票
   发表时间:2011-06-09  
susam 写道
jorneyR 写道
Mapper方便非常,
虽然说可以不需要DAO了,但会在你的业务逻辑里多次嵌入大量的

SqlSessionFactory.openSession();
session.getMapper(User.class);

等,从纯粹的意义上来说,这些代码还是隐藏在DAO里好一些。
而且使用了DAO,你可以更方便的更换数据访问层,不影响逻辑层的代码,理论上是这样子,但是一般项目定了使用MyBatis,也不会蛋疼的去换成Hibernate,JPA等


请使用Mapper注入。


恩,使用了mybatis-spring-1.0.0.jar,整合了spring,用spring来管理了sqlsession,就没有这个问题了。
0 请登录后投票
   发表时间:2011-06-09  
分层的目的是解耦,解耦是为了有更好的可扩展性,提高灵活度
0 请登录后投票
   发表时间:2011-06-09  
supben 写道
啥叫你认为,官方就这么建议的

官方只是推荐使用mapper接口......没有建议说不要写DAO.
0 请登录后投票
论坛首页 Java企业应用版

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