Каковы различия во многих подходах к картированию - PullRequest
0 голосов
/ 08 июля 2019

Я хочу, чтобы многие-многие отображали отношения с явной таблицей соединений.

Мой Java-проект Spring предоставляет REST API в формате HAL, и теперь он имеет только два типа:

  • сущности определены и
  • «пустые» интерфейсы для репозиториев (аннотировано @RepositoryRestResource).

Sidenote, зависимости примерно такие:

spring-boot-starter-parent
spring-boot-starter-data-jpa
spring-boot-starter-data-rest
spring-data-rest-hal-browser
postgresql / h2
spring-boot-starter-hateoas

Отношения между таблицами (я имею в виду _ссылки остальных ресурсов. Взгляните на пример документа hal + json и, например, найдите ea:basket.) Работают как положено и работают "бесплатно" ", из-за волшебного порошка из весенней автоконфигурации и другой магии в комплекте.

Сейчас я борюсь, когда добавляю новые зависимости многие ко многим.

У меня есть объекты A, B и Tag. Я хочу иметь любое количество объектов Tag, которые будут связаны с объектами A и B. У меня нет необходимости иметь какие-либо списки / наборы в сущностях A и B (я буду использовать jooq, если мне нужно что-то большее, чем просто crud).

Первая проблема / вопрос:

Я вижу, по крайней мере, три подхода к моделированию связи "многие ко многим" с явной таблицей соединений (чтобы можно было смоделировать мои потребности в ассоциации), и я не знаю различий. В чем различия этих подходов? :

  1. использовать встраиваемый составной ключ в таблице соединений, как предлагает Влад? https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/
  2. используйте подход @IdClass, как указано здесь: https://stackoverflow.com/a/3588400/11152683
  3. использовать несколько @Id в таблице соединений, как показано здесь: https://hellokoding.com/jpa-many-to-many-extra-columns-relationship-mapping-example-with-spring-boot-hsql/

Второй вопрос: Какой подход необходим в моем случае, чтобы легко моделировать ассоциации и заставить волшебный порошок делать свою работу при предоставлении формата HAL в грубых репозиториях. Я имею в виду, что связи отношений будут генерироваться автоматически.

...