Предположим, что в нашей системе клиенты размещают заказы . Итак, для простоты у нас есть 2 объекта:
Customer
- CustomerID
- Name
Order
- Customer
- OrderID
- OrderValue
У нас есть служба REST, которая используется для сохранения / обновления клиента, а также служба REST, которая используется для заказов POST.
В JPA, на самом деле, сущность Order
имеет отношение ManyToOne
к сущности Customer
. Итак, предполагая, что я не использую DTO
, мне нужно позвонить моему OrderService
, проходящему, по крайней мере, примерно так: JSON
:
{
"customer": {
"customer_id": 10
},
"order_id": 40,
"order_value": 200.1
}
И когда я возвращаю заказ RestClient, все Customer
возвращается, так как он загружается во время процесса.
Итак, думая о сложных системах, где много «сущностей», которые «вложены», приемлемо (или, по крайней мере, неплохо) создавать сущности, которые ссылаются только на ключ вместо объекта сама ? Что-то вроде:
Order
- CustomerID
- OrderID
- OrderValue
Я новичок в JPA / Hibernate и приехал из мира, где все объекты были загружены вручную из базы данных. Поэтому при работе с заказом мы загружали только Customer.CustomerId
вместо всех данных клиента. Здесь, в этом примере, я думаю, что у меня есть два варианта: загрузить всех клиентов (используя FetchType.EAGER или не загружать ничего (используя FetchType.LAZY), поэтому нет способа (по крайней мере, насколько я знаю) вернуться к RESTClient. объект Order, который содержит только его CustomerID (по крайней мере, без ручной установки order.customer.customer_id, что звучит немного странно).
Большое спасибо!