DDD指定每个聚合的存储库,但当采用Spring数据JPA时,我们只有在声明每个实体的接口时才能利用这些好处。如何解决阻抗失配问题?
我希望尝试封装在聚合存储库中的存储库接口,这是一个好的解决方案还是更好的解决方案?
举个例子:Customer
是聚合根,实体如人口统计
、标识
、AssetApril
等,每个实体都可以从拥有自己的存储库接口中受益。什么是不违反DDD的最佳方式?
但是,当采用Spring数据JPA时,我们只有在声明每个实体的接口时才能利用这些好处…
这是错误的,我想知道你从哪里得到这种印象(请随意评论)。Spring数据存储库期望对域模型设计采用完全相同的方法:在域模型中标识聚合,并仅为这些聚合创建存储库接口。
我认为你需要做的就是将DDD概念应用到你的领域模型中。只是不要为不是聚合根的实体声明存储库接口。事实上,如果您声明了这些,基本上就打破了聚合的概念,因为实际的根无法再控制业务约束,因为其他实体可以通过为它们定义的html" target="_blank">存储库接口进行操作,即不使用聚合根。
在这个Spring数据示例中找到一个正确应用的例子。其中,Order
是一个聚合根,LineItem
只是一个普通实体。这同样适用于客户
(root)和地址
(普通实体)。存储库接口仅适用于聚合根。
事实上,这种特殊的关系是使Spring Data REST等模块首先工作的基本原则。它只为聚合根公开HTTP资源,在创建的表示中嵌入普通实体并创建指向其他聚合的链接。
它是否将其存储在缓存中?我有一个应用程序,但应用程序中没有任何地方。属性是提到的db详细信息。我可以通过邮递员存储数据和查询它。
我已经实现了一个小用例来评估Spring Data Neo4j。我有一个接口,它扩展了GraphRepository。 界面是这样的: 这给了我错误< code >“类型PublicRepository的层次结构不一致”。 这种类型的错误是因为当前类扩展/实现的类/接口之一不存在,而当前类又在扩展/实现另一个类/接口。 查看核心库的包我发现库中没有扩展为CRUDRepository的接口。我在Ne
我正在阅读领域驱动设计中的存储库和Microsoft微服务架构模式,他们都同意我应该为每个聚合根拥有一个存储库。我大体上同意这一点,但我有一个命名问题。 聚合是存储库作为... 实体是??? 值是??? 在我的特定场景中,我有一个营销网站上下文中产品对象的存储库。 Product是ProductInfo营销信息实体(Aggregate Root)、ProductSpec和ShippingInfo实
我正在尝试实现一个简单的REST服务,该服务基于具有Spring启动和Spring数据Rest的JPA存储库。(请参阅此教程)如果将以下代码与 gradle 一起使用,则运行良好: 为了让事情变得更简单,我使用Spring boot CLI(“Spring run”命令)尝试了相同的代码。 不幸的是,这似乎不起作用@RepositoryRestResource似乎无法像@RestControlle
我想知道是否有任何机制可以在Spring Data MongoDB存储库中使用带有注释的?我希望能收到我所拥有的文件数量,而不必获取所有文件。 基本上,这在Java中相当于:
问题内容: 我想知道在带有注释的Spring Data MongoDB存储库中是否可以使用任何机制?我很想收到我所拥有的文件数量而不必全部获取。 基本上,这等效于Java: 问题答案: 对我来说,这个解决方案就像一个迷住了一样(使用spring-data-mongodb 1.3.1.RELEASE),我也遇到了同样的问题atm并像这样解决了它(这只是我工作中的一小段代码):