JPA Referenced Entities: плохая практика - ссылаться только на свой ключ вместо всего своего объекта - PullRequest
0 голосов
/ 08 ноября 2018

Предположим, что в нашей системе клиенты размещают заказы . Итак, для простоты у нас есть 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, что звучит немного странно).

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...