Использование Hibernate / JPA без связей и обход нескольких вызовов БД - PullRequest
3 голосов
/ 15 декабря 2009

Мне кажется, что когда вы используете отношения в Hibernate / JPA, использование таких связей, как OneToMany, может повысить производительность при чтениях, поскольку для получения родительского объекта и всех дочерних объектов потребуется выполнить только один вызов базы данных. Я хочу избежать использования отношений и просто отображать столбцы внешнего ключа как обычные столбцы из-за характера моего приложения.

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

ParentEntity pe => someDao.findBySomething("some param"); //db round trip List<ChildEntity
childEntities = someDao.findChildren(pe); //db round trip

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

Ответы [ 2 ]

3 голосов
/ 15 декабря 2009

Если вы хотите избежать отношений, вы потеряете значительное преимущество JPA. Однако вы все равно можете делать то, что хотите, с Native SQL , который поддерживается Hibernate.

2 голосов
/ 16 декабря 2009

Вы также можете использовать @NamedQueries и HQL / JPA-QL вместо своих отображений. Было бы проще написать. Например:

childEntities = someDao.findByQuery("Child.findChildrenOfParent", parentId);

Где Parent.findChildren равно

SELECT c FROM Child c WHERE c.parentId=:parentId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...