`

领域建模学习----Repository

    博客分类:
  • DDD
阅读更多
领域建模....好多地方不明白.
过去都是
application---->service----->dao--->db
现在看了领域建模,还真是不明白.
尤其是这个repository,很是不解..只得看看高人见解..

引用

Repository是对象的仓库,也就是保存对象的地方,这个仓库就是我们普通意义的仓库,一个真正OO系统,业务层是围绕活动的对象进行,活动的对象是从仓库中获取的,也是通过交给仓库进行对象长久保管,也就是持久化意思,说白了,就是保存到数据库。

而DAO则没有如此OO概念,DAO是Data access Object,DAO中有数据概念,还是没有摆脱数据库的影子。

所以,Repository替代DAO,是OO深入的趋势,但是在具体处理中,由于性能或设计不够周到或者一些事情把握不定,DAO还会继续存在一段时间,属于过渡式消失。

Repository和DAO两个概念比较中发现,Repository是相对对象而言,而DAO是相对数据库而言,只要我们还是使用关系数据库保存对象,也可能这两者都同时存在,因为侧重点不一样,但是可以肯定的是,业务层应该直接和Repository打交道,而不是DAO.

以上是我个人认识。


引用

》即无论聚合的重建、聚合内部的关联、聚合根之间的引用最终都离不开关系数据库中字段的联系
是的,但是DDD叫你使用repository来隔断数据库,将领域层和数据库分离。
分享到:
评论
2 楼 east_java 2008-08-10  
Repository repository 就是類似 DAO 一樣的元件,方便做 CRUD 和 findByXxx()的動作。但是和傳統DAO做法不同的是,並不是一個 table 一個 DAO class,而是一個 Aggregate 一個 Repository,cover 的範圍以 domain 為單位。像是車子內的這幾個class 不會有自己的 repository ,只有 root 車子才會有 CarRepository,這個與上面的 Aggregate 相互應:root class 是對外的唯一窗口。在 domain 裡,我們不可能不找車子,而直接找第三個輪胎。如果胡亂寫個 WheelRepository 的話,不通過車子任意讓人讀取,這會造成架構的混亂,未來車子要變更設計時... 頭就很大了
1 楼 east_java 2008-08-05  
引用
可以理解Repository就是对Dao的封装,不同点在于Repository只返回model或者model的集合,而dao则可以返回的更多比如返回一些统计数据。


相关推荐

    civil-repository:基本脚本-matlab开发

    在"civil-repository:基本脚本-matlab开发"的github_repo.zip压缩包中,可能包含这些脚本实例,通过学习和理解这些脚本,开发者可以提升MATLAB编程技能,并将其应用于实际的土木工程项目中。每个文件可能解决特定的...

    DDD项目相关学习资料

    - **领域建模**:识别核心领域概念,定义实体、值对象、聚合、领域事件等。 - **界限上下文**:划分业务领域的不同部分,明确边界,避免领域模型的混乱。 - **战略设计**:掌握通用语言、子域划分、Bounded Contexts...

    first-repository

    根据压缩包子文件"first-repository-master"的文件名,我们可以推测这可能是从一个Git仓库克隆下来的主分支(master)的完整副本。在Git中,master分支通常是默认的主分支,包含了项目的最新稳定代码。 结合以上...

    斯坦福 兔子3d模型 The Stanford 3D Scanning Repository 用于点云配准、表面重建

    除了点云配准和表面重建,斯坦福兔子模型还被广泛应用于其他领域,如机器学习、计算机视觉、虚拟现实以及游戏开发等。它的多视图数据为训练深度学习模型提供了丰富的输入,同时,它的标准化格式使得不同研究之间的...

    OBIEE学习总结之入门

    对于初学者而言,掌握OBIEE的基础知识是踏入BI领域的关键一步。本篇文章将根据提供的“OBIEE学习总结之入门”资料,深入解析OBIEE的基本概念、组件和工作流程,帮助读者快速入门。 1. **OBIEE简介** - OBIEE是...

    The template repository for the mysql学习笔记.zip

    学习实体关系模型(ER模型)和数据建模,以及如何将这些模型转化为实际的数据库表。 4. **存储引擎**:MySQL支持多种存储引擎,如InnoDB(默认,支持事务处理和外键)和MyISAM(不支持事务,但读取速度快)。了解...

    Repository for useful Matlab scripts.zip

    - **模拟和仿真**:系统建模、动态过程模拟等。 - **App Designer**:Matlab的新特性,用于构建现代、图形化的应用程序。 - **并行计算**:利用多核处理器或GPU进行加速计算。 总的来说,这个压缩包是学习和提升...

    领域驱动设计DDDelecfans.com-.rar

    6. **战术设计**:包括实体、值对象、聚合、工厂、领域服务、Repository等设计模式的运用。 快速学习领域驱动设计,可以从以下几个步骤入手: 1. **理解业务**:与领域专家深度交流,了解业务流程和规则。 2. **...

    ml-pro-repo

    该项目“ml-pro-repo”主要聚焦于机器学习领域中的一个经典案例——利用葡萄酒数据集进行分类任务。其核心目的是通过对UCI数据库中提供的`wine.data`文件进行深入分析,采用支持向量机(SVM)与随机森林(Random Forest...

    领域驱动设计模型例子-Java.rar

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,它强调将业务领域专家的知识转化为可执行的代码,以实现对复杂...通过对这个例子的分析和学习,我们可以提升自己的领域建模能力和Java编程技巧。

    DDD在Java框架的例子课程.zip

    DDD的核心理念是通过深入理解和建模业务领域来驱动软件设计,使得代码更加贴近业务逻辑。在这个例子课程中,我们将探讨如何在Java框架中应用DDD原则和实践。 **1. DDD的基本概念** - **领域**:业务运作的核心部分...

    实现领域驱动设计

    - **技术债务**:过度的领域建模可能导致技术债务,需要平衡模型的复杂性和实际需求。 通过阅读《实现领域驱动设计》这样的书籍,开发者可以深入理解这些概念,并将其应用于实际项目中,构建更符合业务需求、更...

    smart-lottery抽奖系统基于COLA架构采用DDD领域驱动中四层架构

    DDD(Domain-Driven Design)是一种以业务领域为中心的软件开发方法,它强调通过深入理解和建模业务来驱动软件开发。DDD的核心概念包括聚合根、实体、值对象、领域事件、工厂、仓储等,这些元素帮助开发者构建出高度...

    GitHub Repository Classifier GitHub 存储库分类器.pdf

    随着信息技术领域的快速发展,新的编程语言、框架以及问题解决方法几乎每天都在涌现。作为一名IT行业的专业人士——无论您是学生、科学家还是软件工程师——更新自己的知识体系和技能至关重要。在这一过程中,社交...

    kft-activiti-demo-master_tapepju_palaces66_DEMO_activiti_

    在信息化管理领域,工作流引擎扮演着至关重要的角色,它能帮助企业自动化处理业务流程,提高效率。其中,Activiti是一款广泛使用的开源工作流引擎,它基于Java技术,提供了强大的工作流建模和执行能力。本文将通过...

    DDD领域驱动设计day01.pdf

    - 第一天主要介绍DDD设计篇,通过事件风暴法进行业务领域建模,建立统一语言建模,理解成为顶级业务架构师的本质。 - 第二天关注DDD实践篇,讲解如何基于领域模型进行数据库和程序设计,以及如何设计聚合、工厂和...

    DDD 学习材料

    9. 仓储模式(Repository Pattern):仓储模式用于领域对象的持久化,它抽象了数据访问细节,提供了类似于集合的接口来操作领域对象的集合。 10. 服务(Service):领域服务封装了领域逻辑中不属于任何实体或值对象...

    apache-maven-3.6.3.zip

    Apache Maven 是一个强大的项目管理工具,广泛用于Java开发领域。Maven通过使用一种标准化的项目对象模型(Project Object Model,POM),自动化构建过程,包括编译、测试、打包、部署等步骤。它依赖于一组预定义的...

    ddd & enode 领域驱动

    #### 五、领域建模步骤 1. **需求分析**:从业务场景出发,识别领域概念及其关联。 2. **初步模型构建**:基于上述分析构建初步的领域模型。 3. **应用层分析**:识别应用层职责,区分领域层与应用层的功能。 4. **...

    领域驱动设计(英文版) - Abel.Avran

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,旨在解决复杂业务系统的建模问题。它强调以业务领域为核心,通过紧密的合作来理解复杂的业务环境,并将其转化为有效的软件模型。DDD的主要目标...

Global site tag (gtag.js) - Google Analytics