当前位置: 首页 > 面试题库 >

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

范霄
2023-03-14
问题内容

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

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

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

问题答案:

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

现在是什么形成聚合根?可能更有趣:什么不?当然,这很大程度上取决于您的域,但是让我在这里给您举一个例子。通常将一个Order包含物LineItems建模为聚合根。这是由于的组成性质OrderLineItem没有周围的环境,A
就不会存在Order

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

我们还 强烈 建议 不要
使用商店特定的存储库基本接口,因为顾名思义flush(),如果可能的话,将商店特定的信息(例如)公开给他们不应该知道的客户。



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

  • 问题内容: 在开发具有许多存储过程的应用程序时,是否应该将它们存储在某种源版本控制系统中(例如源安全,TFS,SVN)?如果是这样,为什么?是否有使用SQL Server Management Studio进行操作的便捷前端方法? 问题答案: 是的。所有代码都应存储在源代码管理中。 简而言之,代码就是代码,并且会发生错误。能够回头看看随着时间的推移发生了什么变化并能够返回到那些变化,这是很好的。

  • 我有一个大程序,我几乎在每个类中都使用我的主类。我通常通过getInstance方法访问,但是每次我需要的时候我都会这样做。例如: 现在我想知道这是否非常有效,如果我为它声明一个变量并访问该变量是否更好: 如果我只在一种方法中需要它,如果我只在方法本身中声明它,它会更有效和更节省内存吗?提前谢谢!

  • 我正在使用Ehcache 3 我有一个缓存用于存储一种类型的对象,另一个缓存用于不同类型的对象。这些在不同的类中,每个都有自己的缓存管理器。 但是我现在想知道我是否误解了这些示例,让一个CacheManager管理两个不同的缓存更有意义,或者你只是想使用同一个CacheManager来管理同一类型的多个缓存。 因为示例喜欢将代码链接在一起,所以从留档中很难看出正确的方法是什么。

  • 和类似的服务: 我用的是12个实体,大家的服务方式都一样。 谢谢!

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