博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Repository 与 DAO
阅读量:6422 次
发布时间:2019-06-23

本文共 1958 字,大约阅读时间需要 6 分钟。

  hot3.png

资源库(Repository)             ------   查阅一些资料,小见解

    协调领域和数据层映射层,利用类似于集合的接口来访问领域对象。

    它将分离了数据库访问层跟领域对象的代码细节。

    Repository在新解释中,其有两中分类:面向集合的资源库 跟 面向数据库的资源库。

    面向集合方式的资源库:

        访问方式近似于集合操作。通常从集合中获取得到领域对象,改领域对象在操作改变数据之后,再次从资源库或取改对象,其值跟原来的领域修改过的领域对象值一至。

简单的面向集合方式的Repository一般有

add() , remove(), get() 这些方法。 不同于,面向数据库型的Repository,在获取某一领域对象修改后要额外调用save()方法,来同步原来Repository数据。

public class TestProductRepository{    public void testIdof()    {        Product found = Registry.productRepository()                            .prodcutOf(new ProductId(1L));                        found.name("New Name");        Product otherFound = Registry.productRepository()                                .productOf(new Prodcut(1L));                assertEquals( found.name(), otherFound.name()  );    }}

上面测试例子说明在修改在Reposiotry取出来的领域对象引用操作改变后,跟你再一次从Repository中取出一致的。

    在hibernate中,session关闭时检查相关对象dirty状态,进行与数据库同步,使得我们可以实现面向集合方式的Repository。

     面向数据库方式的Repository

与面向集合方式的Repository类似,主要区别在于,我们需要save()方式,让新修改数据同步到Repository中去。

public class TestProductRepository{    public void testIdof()    {        Product found = Registry.productRepository()                            .prodcutOf(new ProductId(1L));                        found.name("New Name");        Product otherFound = Registry.productRepository()                                .productOf(new Prodcut(1L));                assertNotEquals( found.name(), otherFound.name()  );                Registry.productRepository().save(found);                 otherFound = Registry.productRepository()                          .productOf(new Prodcut(1L));                assertEquals( found.name(), otherFound.name()  );    }}

Repository 与 DAO

    有时Reposiotry与DAO被当作同意词看待。有一个明显的区分。

    DAO通常是对数据库表的封装,当我们使用事务脚本时,经常创建贫血的只有简单get/set的对象,大多根据一行数据的映射。DAO对这一层的数据库访问进行、封装,可以看待为对数据的CRUD,交由事务脚本处理。

    Reposiotry使用数据映射器或其他技术,进行存储与获取操作是的领域对象,可能是一系列的聚合或实体,更加的面向对象,同时也有着对数据访问层的封装。

    通常我们可以将Reposiotry跟DAO一样看待,但我们知道Repository是面向领域模型的,而DAO则面向的是数据的。

    

转载于:https://my.oschina.net/XzhiF/blog/265165

你可能感兴趣的文章
开门人和关门人(杭电1234)
查看>>
万能adapter
查看>>
开发指南专题六:JEECG微云高速开发平台代码生成
查看>>
cocos2d-x 游戏优化方案
查看>>
1.3 Quick Start中 Step 6: Setting up a multi-broker cluster官网剖析(博主推荐)
查看>>
remote desktop connection manager
查看>>
开源库RxJava、ButterKnife
查看>>
JDK内置工具jstack(Java Stack Trace)(转)
查看>>
百度之星 / 初赛第二场 B题
查看>>
Http压测工具wrk使用指南
查看>>
Excel VBA 循环“我中毒了~”
查看>>
CSS 教程Part4 [盒子模型](摘录自 W3C School)
查看>>
android开发技巧
查看>>
五个有趣的拓扑变换问题 [转]
查看>>
asp.net中的比较完美的验证码
查看>>
HDU 3277 Marriage Match III(最大流+二分+并查集)
查看>>
FPSMeter – 简单的、可定制主题的 FPS 仪表库
查看>>
Android应用中使用百度地图API定位自己的位置(二)
查看>>
24点经典算法
查看>>
内核及其组成部分
查看>>