Автор оригинала: 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 является гораздо более эффективной альтернативой сопоставлению коллекций.