如何在服务层处理复杂对象的保存

How to handle save of complex object in service layer

我有一个复杂的对象域对象调用 A。它由 3 个其他对象组成。

public class A { 
  private B bObject;
  private C cObject;
  private D dObject;

  //somes primitive types fields
} 

我有一个对象 A 的服务层。

public class serviceA {
  private RepositoryA repositoryForA;

  //CRUD operations on A
}

对象 B、C、D 有自己的存储库,它们没有服务层。因为他们暂时没有商业逻辑。它们只包含 A 的信息。

为了保存 A,我需要保存所有组合对象 B、C、D,并且我必须将 B、C、D 存储库注入服务 A class。

所以我认为这不是一个好主意,对于 A 上的每个新组合对象,我都需要在 serviceA class 上注入一个新的存储库。 我的 A 对象是不是太复杂了,还是必须这样做?

这不是一个简单的问题。无论如何,我让它变得简单,我还假设 A 和 B、C 和 D 之间存在关系。所以我希望在不保存组成它的 objects 的情况下保存 A 并没有任何意义,在这种情况下是服务层A的也应该关心他的children。

我在 Java 上下文中,我使用 JPA/Hibernate。因此,如果我使用 objet 之间的良好关系,Hibernate 应该保存所有复合对象。

https://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/