ddd-repositories相关内容

Spring Data 存储库是如何实际实现的?

我已经在我的项目中使用 Spring Data JPA 存储库有一段时间了,我知道以下几点: 在存储库接口中,我们可以添加诸如 findByCustomerNameAndPhone() 之类的方法(假设 customerName 和 phone 是域对象中的字段). 然后,Spring 通过在运行时(在应用程序运行期间)实现上述存储库接口方法来提供实现. 我对它的编码方式很感兴趣,我 ..

哪种架构适合在这个项目中实现?

我是架构新手.我有一个 MVC Web 应用程序项目,我想首先使用 EF 代码.我想为这个项目使用架构.我想使用 DDD(域驱动设计),但它适用于大型项目.我想要一个简单的 DDD 来支持我的项目中的这些东西:1-存储库模式2-国际奥委会3-服务层如果有人建议架构或示例架构,您对我有什么建议,这对我更有帮助,谢谢. 解决方案 创建一个新的 MVC 项目,然后从 nuget 安装 CodeP ..

存储库是否应该引发域错误

我正在构建一个尝试遵守简洁架构的应用程序.我知道存储库旨在抽象出持久层并根据域语言返回实体.但是,这是否意味着它也应该在出现问题时检查并抛出域错误.让我们考虑一种情况,我想通过用户存储库添加用户.我可以执行以下操作: //在用户仓库中const add = (user: User): void =>{尝试 {//做一些数据库的事情} 抓住() {throw new EmailAlreadyInU ..
发布时间:2021-11-17 02:52:20 其他开发

允许通过互操作进行 CRUD 操作的数据库存储库模式

我们目前面临的情况是模型实体和数据库逻辑紧密交织在一起,这使得单元测试变得不可能.所以,我决定设计一个 Repository 模式.我们通过Com交互看到的存储模型的基本结构是Root-Children[每个孩子都是另一个Root].这是一个树状结构.理解了这一点,我们设计的 Repository 是用于 root 上 CRUD 操作的 RootRepository 和 RootRepositor ..

在哪里调用DDD中的repository.update?

我有一个真实的场景,那就是完美的域模型设计.它是一个具有多个象限的字段,每个象限的状态不同.因此,我的总根是该字段.现在我有一个重要的问题:我想拥有一个敏锐的ignorat域模型,我认为这是有道理的.所以我应该在哪里调用存储库方法的更新?不是在域模型中,对吧?因此,当没有更改跟踪根代理的对象并且不应在实体中调用存储库时,汇总的根子实体应如何在数据库中更新?还是我误解了领域模型模式? 我的问题 ..
发布时间:2021-05-02 20:20:32 C#/.NET

存储库应该引发域错误

我正在构建一个尝试遵守干净架构的应用程序.我了解该存储库旨在抽象化持久层并根据域语言返回实体.但是,这是否意味着它也应该在出现问题时检查并引发域错误.让我们考虑一下我想通过用户存储库添加用户的情况.我可以执行以下操作: 用户回购中的 //const add =(用户:User):void =>{尝试 {//做一些数据库工作} 抓住() {抛出新的EmailAlreadyInUse(user.e ..
发布时间:2021-04-09 19:05:48 其他开发

聚合到JPA实体的映射

在我参与的 DDD 项目中,我们正在寻找一些便捷的解决方案来映射实体对象转换为域对象,反之亦然。 该项目的开发人员同意将域模型与数据模型完全分离。 数据层使用 JPA(休眠)作为持久性技术。 我们都认为持久性是DDD中的实现细节,从开发人员的角度来看,我们都在寻求应用程序各个方面的最合适解决方案。 我们最担心的是将包含实体的列表的聚合映射到一个 JPA实体,而该实体又包含一个一 ..
发布时间:2020-10-25 21:18:30 Java开发

DDD中聚合的不同持久性存储库

我有一个带有根实体(文档)和VO(文档)的集合。文档与文件(pdf,图像,office文档等)相关联,因此我必须将聚合持久保存在数据库中,并将文件持久保存在ftp服务器中(由于空间文件太大,因此无法将文件保存在数据库中)。 我的数据库存储库类使用诸如FindXXX,AddDocument,RemoveDocument等方法实现接口。如何实现ftp持久性?我的数据库存储库是否应该在AddDocum ..
发布时间:2020-10-25 21:18:17 其他开发

DDD:如何处理大型馆藏

我目前正在为REST中与社交网络相关的应用程序设计后端。我对DDD原理很感兴趣。现在,假设我有一个User对象,该对象具有一个Friends Collection。如果应用程序和用户将变得非常成功,则这些数字可能为数千。每个朋友也将具有一些属性,它基本上是一个用户。 查看 DDD Cargo应用示例,它是完全扩展的Cargo -对象会不时地从CargoRepository中存储和检索。哇,如果聚 ..
发布时间:2020-10-25 21:13:06 其他开发

DDD是否适合各种应用?

我在这里和其他论坛上提出的许多问题中看到的一个常见反应是,“您不需要为此进行DDD。它是一个简单的CRUD应用程序,DDD是一项过度设计的项目”。 嗯,我是DDD的新手,我认为DDD中有很多元素具有普遍吸引力,可以广泛使用,无论您是否应用程序是复杂的enuf来强制DDD。例如,应用程序分层,DDD识别的不同工件等。可以从基础知识和公认的贫血模型开始,然后朝着尽可能多的纯度工作/重构。 ..
发布时间:2020-10-25 21:12:56 其他开发

我是否应该将存储库传递给引发事件的域方法

与这个问题:我应该将存储库传递给需要在方法动作发生并保持后触发事件的域对象方法吗? 在这种情况下,系统需要发送域对象的状态更改后的电子邮件。虽然这种情况不太可能发生,但状态更改不会持续存在,在这种情况下,不应发送电子邮件。 我可以使用域服务来完成工作,但是状态更改的所有逻辑都属于域对象,并且包含在域对象中,因此我的服务最终看起来像 StatusService(Irepo rep ..
发布时间:2020-10-25 21:10:40 其他开发

DDD资料库除了可以使用“真实”内容外,还可以使用摘要对象吗?对象

说我正在创建一个存储库,以存储数字电子书,如下面的界面所示。该存储库将存储书籍的实际文本以及标识书籍的元数据(标题,作者,出版商,ISBN等。)。 公共接口IBookRepository { void AddBook(Book newBook); void DeleteBook(int bookId); void UpdateBook(Book UpdatedBook); 图 ..

如何在DDD中正确定义聚合?

在DDD中设计聚合时,经验法则是什么? 根据Martin Fowler的说法,聚合是可以被视为域对象的域对象的集群。单个单元。聚合将具有其组成对象之一作为聚合根。 https://martinfowler.com/bliki/DDD_Aggregate.html 在设计了大约20个DDD项目之后,我仍然对 Martin Fowler使用订单和订单项类比,但我认为这不是一个好 ..
发布时间:2020-10-25 21:06:49 其他开发

DDD中的软删除

我有一种方案,当用户请求删除时,可以根据某些逻辑将给定实体标记为软删除或硬删除。 从DDD范式着手解决这个问题,我看到了一些问题:-DDD建议对所有与持久性相关的东西都使用Repository对象,其中域层仅定义了此类repo接口(包含典型的方法(例如存储,删除,查找),以及包含实际实现的基础架构层。鉴于此,对于我这里的问题,决定是否进行软删除的逻辑属于域层,如何以这样的方式将逻辑包含在域层 ..
发布时间:2020-10-25 21:06:46 其他开发

如何更新聚合内的实体

我有一个名为Campaigns的聚合,每个聚合都有一个名为Campaign的根实体,该根实体具有尝试(实体)列表。 公共类尝试:IEntity { private int id; public AttempNumber AttemptNumber {get;} //其他字段 } public class Campaign:IEntity ..
发布时间:2020-10-25 21:06:44 其他开发

域模型和存储库可以位于单独的dll中吗?

域模型和存储库可以放在单独的dll中吗? 在3层体系结构中,我想我会将域模型放在业务层$ b $中b和数据访问层中的存储库。 我很困惑,因为据我了解,域模型使用存储库,而存储库应从域模型返回对象,这将导致循环依赖。 我一定会误解上述一个或多个概念。 任何澄清将不胜感激,因为这困扰了我一段时间,谢谢。 解决方案 我不认为您应该让您的域程序集完全引用您自己的应用程序中的 ..

域模型可以知道存储库吗?

对于某些域逻辑实现实体可能需要访问回购协议以更新/删除自身或任何相关实体。 解决方案 不是,至少在以“ domain标记的问题上不是这样吗?驱动设计” 标签。 肯定地,Active Record模式有权在某些系统中使用,并且某些人发现强耦合很有用,但是在DDD中,建议的方法是显式使用存储库: Evans DDD,第152页:对于需要全局访问的每种对象类型,创建一个对象,该对象可以提 ..
发布时间:2020-10-25 21:06:07 其他开发

如何使用Spring Crud / Jpa存储库实现DDD

我想通过使用Spring实现DDD来创建应用。假设我有一个业务实体Customer和一个接口CustomerRepository。 因为spring提供了 CrudRepository 和 JpaRepository 默认执行基本的CRUD操作和其他操作,例如finder方法,我想使用它们。因此我的界面变为 @Repository 公共接口CustomerRepository扩展了 ..

基础架构层中的域驱动设计存储库实现

我对DDD分层体系结构的依赖性有疑问。如果存储库实现在基础结构层中,则意味着基础结构层对域层具有依赖性,因为实体将在存储库实现中被引用。 ,如果在域中使用基础结构服务,则域层可以引用基础结构层。 这是否不会创建循环引用? 解决方案 查看洋葱体系结构显示了DDD解决方案的良好设置。 (请看下面我的评论-如果可以的话,请使用垂直切片-使用多年后洋葱的成本似乎不合理) 基本上, ..
发布时间:2020-10-25 21:01:23 其他开发

域驱动设计存储库和Spring Data存储库之间是否不匹配?

DDD指定每个聚合的存储库,但是当使用Spring Data JPA时,我们只有在声明每个实体的接口时才能利用这些好处。如何解决这种阻抗不匹配的问题? 我希望尝试封装在聚合存储库中的存储库接口,这是好的解决方案还是更好的解决方案? p> 举个例子:客户是汇总根,实体类似于人口统计,标识, AssetSummary 等,每个实体都可以从拥有自己的存储库接口中受益。最好的方法是什么,而又不 ..