Repository是对象的仓库,也就是保存对象的地方,这个仓库就是我们普通意义的仓库,一个真正OO系统,业务层是围绕活动的对象进行,活动的对象是从仓库中获取的,也是通过交给仓库进行对象长久保管,也就是持久化意思,说白了,就是保存到数据库。
而DAO则没有如此OO概念,DAO是Data access Object,DAO中有数据概念,还是没有摆脱数据库的影子。
所以,Repository替代DAO,是OO深入的趋势,但是在具体处理中,由于性能或设计不够周到或者一些事情把握不定,DAO还会继续存在一段时间,属于过渡式消失。
Repository和DAO两个概念比较中发现,Repository是相对对象而言,而DAO是相对数据库而言,只要我们还是使用关系数据库保存对象,也可能这两者都同时存在,因为侧重点不一样,但是可以肯定的是,业务层应该直接和Repository打交道,而不是DAO.
咬文嚼字的话
DAO是对象访问接口类
接口类=方法的管理类
就是操作数据库的具体方法的类
User
UserDAOImpl 就是管理怎么把User对象存进取出数据库的具体方法的类
repository是对象仓库类
仓库类=对象的管理类
User
UserRepository 就是管理怎么样才能有效的访问User类的类
UserRepository在必要的时候才调用UserDAOImpl去操作数据库
你也可以吧UserRepository理解为UserCache,当然Repository不仅仅是cache的功能