Я разрабатываю API отдыха, который предоставляет конечную точку для вставки правил и элементов. У меня есть сущность с именем rule
, а другая с именем item
, как показано ниже:
Rule.java
@Getter
@Setter
@Entity
@Table(name = "rule")
public class Rule extends PhysicalBaseEntity {
@NotNull
@Column(name = "title")
@Size(max = 100)
private String title;
@NotNull
@Column(name = "description")
@Size(max = 150)
private String description;
@OneToMany(cascade = {CascadeType.MERGE}, orphanRemoval = true)
@JoinColumn(name = "rule_id", nullable = false)
private Set<Item> items;
}
Item.java
@Getter
@Setter
@Entity
@Table(name = "item")
public class Item extends PhysicalBaseEntity {
@NotNull
@Column(name = "code")
@Size(max = 50)
private String code;
@NotNull
@Column(name = "description")
@Size(max = 150)
private String description;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name = "parent_id", referencedColumnName = "id")
private Item parent;
@OneToMany(mappedBy="parent", cascade={CascadeType.ALL})
private Set<Item> children;
}
, и мне нужноиспользовать объект VO для представления этой информации, но я не знаю, как я знаю, является ли этот подход лучшим. Моя первая идея заключается в том, что сущность «Правило» отправляет всю информацию, например:
{
"id": "55cfd101-3bc3-4842-a1ab-f88096b9ea06",
"title": "TITLE",
"description": "DESCRIPTION",
"items": [
{
"id": "fa1c8e5f-5791-491b-b1ee-4d09048608d6",
"code": "2",
"description": "PARENT",
"children": [
{
"id": "755bed57-1581-4524-bae1-4ec648711a88",
"code": "000",
"description": "FIRST SON"
"children": [
{
"id": "1420ad3b-5278-48fe-a638-77a2e16feb39",
"code": "111",
"description": "SECOND SON"
"children": [
{
"id": "f55cf8d1-b2e4-4a9e-9f79-df156a5ac0a4",
"code": "222",
"description": "THIRD SON"
}
]
}
]
}
]
}
]
}
Это лучшая идея для меня?