当前位置: 首页 > 知识库问答 >
问题:

在JPA中每个表应该有一个存储库吗?

徐学潞
2023-03-14

例如,下面是一个storeRepository。它处理store对象上的CRUD操作。如果我希望存储库也保存StoreEvent对象,我将如何更改下面的接口以容纳这两个对象呢?

@Repository
public interface StoreRepository extends JpaRepository<Store, String> {
    public Store findByGuid(String guid);
}

共有1个答案

甄志
2023-03-14

由于存储库是一个源自领域驱动设计的概念,考虑数据库表是错误的方法。根据定义,您可以从存储库访问聚合根。实际上,一个存储库正在模拟这些的集合。

那么什么形成聚合根呢?也许更有趣的是:什么不是?那当然是高度依赖于你的领域,但让我在这里给你举个例子。包含lineitemsorder通常被建模为聚合根。这是由于order的组合性质造成的。没有周围的顺序,行项将不存在。

通常持久性访问机制应该遵循域原则。因此,您可以将OrderLineItem建模为@Entity类,但只创建一个OrderRepository,因为它们形成聚合根,并有效地控制对象图中的一致性规则。

 类似资料:
  • 问题内容: 您是否应该在JPA中每个表有一个存储库?如果不是,您如何解决存储库数据库中的泛型? 例如,下面是一个。它处理对对象的 CRUD 操作。如果我想让存储库也保存一个对象,我将如何更改下面的界面以容纳两个对象? 问题答案: 由于存储库是从域驱动设计派生的概念,因此考虑数据库表是错误的方法。根据定义,您可以从存储库访问聚合根。实际上,存储库正在模拟这些集合。 现在是什么形成聚合根?可能更有趣:

  • 问题内容: 如何在类内创建和实例化jpa存储库?我处于一种情况,必须为通用类中的不同实体创建存储库。 对于Neo4j存储库,我可以轻松地做到这一点,例如, 对于JpaRepository,我检查了文档并发现了这一点, 我不确定如何在以上代码中实例化工厂。 还不能通过指定域类来像创建Neo4j一样创建存储库吗? 问题答案: 我终于以这种方式工作了, 通过SimpleJpaRepository,我可以

  • 问题内容: 我了解主键的价值。 我了解索引的价值。 每个 MySQL表都应该有一个自动递增的主键(最好是INT字段类型)吗? 更新 @Raj More的答案似乎是最有效的。但是,我想到的问题是,此自动递增的主键ID将如何与其他表相关。例如: 表格1 表2 在上面的示例中,消费者可以来到该站点并选择注册免费的产品/服务。如果消费者选择,他们可以提供其他信息(存储在表2中)以进行其他邮件发送等。我看到

  • 我使用artifactory(OSS 5.1.3)作为通用的构建依赖缓存。我注意到,在存储库浏览器中,每个远程存储库都有一个附加了缓存的第二个条目。例如:“jcenter”和“jcenter缓存”。 自动创建缓存条目。在我向缓存中添加了一个通用的“gradle distributions”存储库之后https://services.gradle.org/distributions/,我发现我在树中

  • 我有一个问题,“列表中的每个孩子都应该在我的应用程序中有一个唯一的“键”道具”错误。我可以打印表格,但我不知道为什么它给我这个错误,因为我提供了一个唯一的ID列表中的每个项目。 我也尝试过向我的表头添加一个键属性,但这并不能修复错误。 如有任何意见,将不胜感激 客户组件 表组件

  • 问题内容: 我想使用两个Git存储库构建一个项目。其中一个包含源代码,而另一个包含构建和部署脚本。 我的问题是我需要一个用于构建和部署项目不同部分(大型项目,多个存储库,相同的构建和部署脚本)的存储库,但是Jenkins似乎无法处理此问题(或者我不知道)不知道/找不到方法)。 问题答案: 更新 现在不建议使用多个SCM插件,因此用户应该迁移到Pipeline插件。 旧答案 是的,詹金斯可以处理。只