스프링 부트 데이터 REST를 사용하여 온라인 경매 REST API를 만들고 있습니다. Domain Driven Design appoach를 사용하려고합니다.스프링 데이터 나머지 도메인 기반 디자인 - 집계가 아닌 루트 엔티티 게시
나는 2 개의 엔티티가있다 .... Listing과 ListedItem. Listed item은 판매용 아이템이고 Listing은 ListedItem으로 구성되며, 목록 작성이 시작되고 끝날 때의 다른 데이터를 포함한다.
ListedItem을 제어 할 수 있도록이 목록이 집계 루트 여야하며 목록을 제거해도 항목이 제거됩니다.
그래서 집계 루트 (리스팅)에 대한 저장소가 있습니다.
먼저 ListedItem을 POST해야 링크 된 ListedItem으로 목록을 게시 할 수 있습니다.
스프링 데이터 나머지를 사용하여 ListedItem을 게시하려면 어떻게해야합니까? 자체의 저장소가 없으므로 엔드 포인트가 공개되지 않습니다.
POST ListedItem을/api/listing-item에 추가 할 수있을 것으로 기대하지만 각 집계 경로에 대한 저장소 만있는 경우 ddd를 사용할 때이를 수행하는 방법을 배울 수 없습니다.
확실하게 ListedItem이 최상위 유지를 위해 자체 저장소가 필요합니까?
@Entity
@Table(name = "listed_item")
@Getter
@ToString
@EqualsAndHashCode
public class ListedItem extends BaseEntityModel {
private String name;
private String shortDescription;
private String fullDescription;
}
@Entity
@Table(name = "listing")
@Getter
@ToString
@EqualsAndHashCode
public class Listing extends BaseEntityModel {
@OneToOne
private ListedItem listedItem;
@Enumerated
private PossibleListingState currentState;
private long numBids;
public Listing() {
}
public PossibleState getCurrentState() {
return currentState;
}
public void setCurrentState(PossibleListingState currentState) {
this.currentState = currentState;
}
}
@RepositoryRestResource(collectionResourceRel = "listings", itemResourceRel = "listing")
public interface ListingRepository extends PagingAndSortingRepository<Listing, String> {
}
감사합니다. :). 이것은 나의 원래 생각을 확인합니다. 솔직하게 나는 이것을 달성하는 데 어려움을 겪었고, 결국 나는 그것에 대해 잘못 생각해야한다고 결정했다. 나는 ... 그래서 같이 { \t "listedItem을"내 전체 목록을 게시하려고 : { \t \t "이름": "항목 이름", \t \t "shortDescription에": "이것은 정말로 단지 아주 짧은 ENT 버튼을 누르면 DVR입니다 무엇 항목 " \t \t"fullDescription는. "". AAT 베로 EOS 등 accusamus 등 iusto ODIO dignissimos ducimus 간략히 blanditiis praesentium " \t} } 그러나 나는 이것을 달성하는 것 없습니다. 내가 어떻게이 일을 할 수 있는지에 대한 조언이 있으면 정말 고마워. – gezinspace
Ahh ... Listing 엔티티에서 내 listingItem에 @OneToOne (cascade = CascadeType.ALL)을 사용해야한다는 것을 잊었다! – gezinspace