JPA 中的每个表是否应该有一个存储库?

2023-12-12

JPA 中的每个表是否应该有一个存储库?如果没有,如何解析存储库数据库中的泛型?

例如,下面是一个StoreRepository。它处理CRUD上的操作Store目的。如果我想让存储库保存一个StoreEvent对象也是如此,我将如何更改下面的界面以适应这两个对象?

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

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

那么什么形成了聚合根呢?也许更有趣的是:什么不是?当然,这高度依赖于您的域,但让我在这里给您举一个例子。一个Order含有LineItems通常被建模为聚合根。这是由于其组成性质造成的Order. A LineItem没有周围环境就不会存在Order.

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

We also strongly推荐not使用存储特定存储库基本接口,因为它们 - 顾名思义 - 公开存储细节(例如flush())如果可能的话,向他们不应该知道的客户。在我的回答中阅读更多相关内容here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA 中的每个表是否应该有一个存储库? 的相关文章

随机推荐

  • 在 R 图形的图例中包含小表格

    我正在绘制按国家 地区分组的公司销售额的点图 所以我的代码是dotchart sales labels company groups country data mydata 我还创建了一个按国家 地区划分的平均销售额表 有什么方法可以将此表
  • laravel 无法为序列化准备路线...。使用闭包

    当我清除 Laravel 5 2 项目中的缓存时 我看到以下错误消息 逻辑异常 无法准备用于序列化的路线 面板 使用闭包 我认为这与路线有关 Route get article slug Front slug 与我的控制器中的特定方法相关联
  • 用于人类友好的相对日期格式的Javascript库[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想以人类友好的格式显示一些相对于当前日期的日期 人类友好的相对日期的示例 10 秒前 20 分钟后 1天前 5 周前 2个月前 基本上忠实地保留了
  • 如何以编程方式构建带有表单和用户控件的 System.Web.UI.Page?

    我有这个代码 public static string RenderView string path Page pageHolder new Page UserControl viewControl UserControl pageHold
  • 不使用任何浏览器使用 Selenium

    我一直在尝试使用 Selenium 进行网络自动化 有没有什么方法可以在不实际安装 Chrome 或 Firefox 等浏览器的情况下使用它们 例如使用一些替代选项 或者拥有它们的便携式版本 如果我可以使用便携式版本 我如何告诉 Selen
  • Python2.7 MySQL 连接器在 LOAD DATA LOCAL INFILE 时出错

    我正在尝试使用 Python 和 MySQL Connector 将人口普查数据动态加载到 mysql 数据库 来自 csv 文件 我不明白为什么我会收到错误 Traceback most recent call last File min
  • 如何使用 d3.js 获取父节点的索引

    使用 d3 js 如果我在 比如说 父节点的某个值 x 之后 我会使用 d3 select this parentNode datum x 不过 我想要的是数据 即数据的 索引 建议 Thanks 元素的索引仅在集合中明确定义 当您仅选择单
  • 如何在Apportable中使用CoreData?

    我尝试了完整版本的可移植性 但 CoreData 有问题 我在configuration json中有正确的功能 FEATURES opengles2 landscape prefer external storage write exte
  • 在 React Native 中获取 onPress 按钮的名称

    我有两个按钮 它们都调用相同的 onPress 函数 在回调中 我希望能够区分按下的按钮
  • WCF 服务返回 400 错误请求

    我有这个应用程序可以在本地运行 并且在部署时使用 mdf SQL Express 数据库文件 我通常将其用于测试目的 但是 当我将其更改为与 SQL Server 2008 一起使用时 应用程序可以工作 但服务却不能 例如 如果在页面后面的
  • 警告:imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG 库报告不可恢复的错误

    我的根文件夹中安装了 WordPress 直到昨天它工作正常 但今天它给出了以下错误 我猜生成缩略图图像 Warning imagejpeg function imagejpeg gd jpeg JPEG library reports u
  • 使用 xlsxwriter 将表格从 Word (.docx) 写入 Excel (.xlsx)

    我正在尝试解析表格的单词 docx 然后使用 xlsxwriter 将这些表格复制到 Excel 这是我的代码 from docx api import Document import xlsxwriter document Documen
  • 将大文本插入 blob

    很长一段时间以来 我一直在尝试寻找这个问题的解决方案 但在互联网上却找不到答案 我遇到这种情况 我需要使用 php 从 firebird 数据库插入或更新 blob 字段 子类型 1 问题是 当文本变得非常大 gt 36k 时 它不会执行查
  • Spring 状态机 - 将静态数据附加到状态

    使用 Spring 状态机 我们有状态和事件 我找不到任何关于是否可以在配置期间将静态数据附加到状态的文档 例如 如果有状态 S1 和 S2 public void configure StateMachineStateConfigurer
  • 在 Java 中打印原语数组

    我有两个数组 char chars 1 2 3 int numbers 1 2 3 为什么打电话后System out print chars 我越来越123之后System out print numbers 我有类似的东西 C 9304
  • Heroku 工具带在上次更新后无法运行

    我使用的是 Ubuntu 10 10 Heroku 在上次更新 上次运行 heroku update 后完全停止工作 现在每个命令都会产生 usr local heroku lib heroku updater rb 54 ininject
  • Python 错误“ImportError:没有命名的模块”

    Python 安装在本地目录中 我的目录树如下所示 local directory site packages toolkit interface py 我的代码在这里 local directory site packages toolk
  • C++中的隐藏规则是什么?

    我对名称隐藏和信息隐藏一词感到非常困惑 最重要的是 c 中的隐藏规则是什么 有人可以给我一个定义吗 姓名隐藏当你覆盖一个类时会发生 struct A int x int y void foo void bar struct B A int
  • 如何在 .gitconfig 中使用 ANSI 256 色

    我正在尝试为 git status 设置自定义颜色 如上所述here 虽然使用预定义的颜色名称有效 color status changed yellow normal 使用 ANSI 256 颜色代码不起作用 color status c
  • JPA 中的每个表是否应该有一个存储库?

    JPA 中的每个表是否应该有一个存储库 如果没有 如何解析存储库数据库中的泛型 例如 下面是一个StoreRepository 它处理CRUD上的操作Store目的 如果我想让存储库保存一个StoreEvent对象也是如此 我将如何更改下面