Как я могу решить, сколько данных загрузить в JPA? - PullRequest
0 голосов
/ 26 февраля 2011

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

Мне нужно получить информацию об узле, его родителях и дочерних элементах, нокаждый раз, когда я выбираю узел через таблицу поиска, он загружает только данные, относящиеся к этому узлу (имя и т. д.). Есть ли способ пройти эту ленивую загрузку и получить больше данных?

Мои структуры данных:

NodeLookup: 
    long id;   
    String url;  
    Node node;  

Node:  
    long id;  
    String name;  
    List<Node> parents; //@ManyToMany  
    List<Node> childrens; //@ManyToMany  

Теперь я решаю эту проблему путем извлечения узла через таблицу NodeLookup и использования идентификатора узла для извлечения узла по-настоящему, но это кажется пустой тратой ресурсов.

(яиспользуя игровые рамки)

1 Ответ

1 голос
/ 26 февраля 2011

По умолчанию JPA использует ленивую загрузку для отношений. Если вы хотите загрузить отношения при загрузке узла, вы должны использовать eager load:

@ManyToMany(fetch=FetchType.EAGER)
List<Node> parents;

@ManyToMany(fetch=FetchType.EAGER
List<Node> childrens;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...