use*_*123 30 java jpa spring-data spring-data-jpa
您是否应该在JPA中为每个表创建一个存储库?如果没有,您如何解决存储库数据库中的泛型?
例如,下面是一个StoreRepository.它处理对象的CRUD操作Store.如果我希望存储库也保存一个StoreEvent对象,我将如何更改下面的接口以容纳这两个对象?
@Repository
public interface StoreRepository extends JpaRepository<Store, String> {
public Store findByGuid(String guid);
}
Run Code Online (Sandbox Code Playgroud)
Oli*_*ohm 37
由于存储库是源自域驱动设计的概念,因此考虑数据库表是错误的方法.根据定义,您可以从存储库访问聚合根.有效地,存储库正在模拟这些集合.
现在形成聚合根的是什么?可能更有趣:什么不是?这当然在很大程度上取决于您的域名,但我在这里举个例子.一个Order含有LineItems通常被建模为一个聚合根.这是由于其组成性质Order.一个LineItem没有周围将不存在Order.
通常,持久性访问机制应遵循域原则.因此,你都建模Order和LineItem作为@Entity类,但仅创建一个OrderRepository,作为表单的聚合根和有效地控制对象图内的一致性规则.
我们还强烈建议不要使用特定于商店的存储库基本接口,因为它们 - 顾名思义 - 将商店细节(例如flush())暴露给客户端,如果可能的话,应该不知道.阅读我的回答更多的是在这里.
| 归档时间: |
|
| 查看次数: |
8539 次 |
| 最近记录: |