Рубрики
Без рубрики

Высокопроизводительная сохраняемость Java – Глава 11 – Взаимосвязи

Автор оригинала: Vlad Mihalcea.

Каждая новая глава моей книги выходит сразу после ее завершения, поэтому читателю не нужно ждать, пока вся часть будет закончена, чтобы получить доступ к новому материалу.

В этой главе объясняются отношения JPA с точки зрения производительности доступа к данным.

11. Relationships
11.1 Relationship types     
11.2 @ManyToOne       
11.3 @OneToMany       
11.3.1 Bidirectional @OneToMany   
11.3.2 Unidirectional @OneToMany  
11.3.3 Ordered unidirectional @OneToMany
11.3.3.1 @ElementCollection    
11.4 @OneToOne      
11.4.1 Unidirectional @OneToOne   
11.4.2 Bidirectional @OneToOne  
11.5 @ManyToMany      
11.5.1 Unidirectional @ManyToMany 
11.5.2 Bidirectional @ManyToMany  
11.5.3 The @OneToMany alternative

Отношения сущностей очень распространены в корпоративных приложениях, использующих JPA в качестве технологии сохранения данных. С точки зрения базы данных отношения таблиц могут быть:

  • один ко многим
  • один к одному
  • многие ко многим

Но JPA определяет несколько аннотаций для сопоставления этих связей таблиц:

  • @manytoon
  • @OneToMany
  • @OneToOne
  • @ManyToMany
  • @Коллекция элементов

В отличие от отношений таблиц, которые имеют внешний ключ только с одной стороны, отношения JPA могут быть однонаправленными или двунаправленными. К сожалению, не все ассоциации JPA эффективны, и цель этой главы-разобраться, какие связи полезны, а какие не следует использовать в высокопроизводительной системе доступа к данным.

Как правило, всегда выбирайте ассоциацию JPA, основанную на сопоставлении дочерней стороны @ManyToOne или @OneToOne , потому что это наиболее естественный способ представления внешней ключевой стороны отношения таблицы.

Вы всегда должны помнить, что отношения JPA не являются обязательным требованием, и иногда запрос JPQL является гораздо более эффективной альтернативой сопоставлению коллекций.