![](/img/trans.png)
[英]How to create a ddd aggregate and update other aggregate with its reference in the same transaction?
[英]How to update this aggregate in DDD way using hibernate?
我有這種情況:
@Entity
public class AggregateA {
private String fieldA;
//around 15 simple fields similar to fieldA
@OneToMany(mappedBy = "entityFieldA", fetchType= FetchType.EAGER)
private Set<EntityA> entitiesList;
void updateAggregate() {
//chose appropriate entity from the list and delegate updating to the `EntityA` class.
EntityA ent = getSomehow();
ent.updateField2();
}
}
@Entity
class EntityA {
private String entityFieldA;
private String entityFieldB;
//few more simple fields here
void updateField2() {
//set appropriate field
}
}
我想使用updateAggregate
更新EntityA
某些字段(因為我想通過聚合更新所有實體)但問題是如果我通過 db 獲取聚合,我將獲取這 15 個簡單字段,並且我將與實體表和這使性能復雜化。 在此之前,有相當簡單的貧血解決方案。 有 EntityA 的存儲庫,所以我們正在獲取實體並更新它們,而根本不知道該更新。 在那種情況下,我們沒有獲取聚合,也沒有連接。 我們只獲取實體對象列表並更新它們。
我想也許 spring 數據預測可以幫助我,但在這種情況下,我需要創建新的界面(使用我想要獲取的字段),在這種情況下,我也在數百萬個地方傳播我的業務邏輯。
有沒有優雅的 DDD 方法來解決這個問題? 我應該將數據層與業務 DDD 層分離嗎?
在我看來, Hibernate 延遲加載正是您要尋找的。
“任何優雅的 DDD 方法來解決它”,DDD 沒有解決方案,這純粹是一個技術問題,DDD 告訴你你的實體/聚合/行為是什么,你如何在代碼中具體化它們並不是DDD 世界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.