Относительно моего более раннего вопроса , я хочу убедиться, что все дочерние объекты загружены, так как у меня есть несколько потоков, которые могут понадобиться для доступа к данным (и, таким образом, избежать исключений при отложенной загрузке). Я понимаю, что способ сделать это - использовать ключевое слово «fetch» в запросе (EJB QL). Как это:
select distinct o from Order o left join fetch o.orderLines
Предполагается, что модель с классом Order
имеет набор OrderLines
.
Мой вопрос заключается в том, что «отдельное» ключевое слово, по-видимому, необходимо, так как в противном случае я получаю Order
для каждого OrderLine
. Я правильно поступаю?
Возможно, более важно, есть ли способ втянуть все дочерние объекты, независимо от их глубины? У нас около 10-15 классов, и для сервера нам понадобится все загруженное ... Я избегал использования FetchType.EAGER
, поскольку это означало, что он всегда готов и, в частности, веб-интерфейс загружает все - но, возможно, это путь - это то, что вы делаете? Кажется, я помню, как мы пытались делать это раньше, а затем получали действительно медленные веб-страницы, но, возможно, это означает, что нам следует использовать кэш второго уровня?