Предотвращение выбора N + One и недопустимых результатов из eclipselink с пакетным чтением

Я пытаюсь сократить количество n + 1 выборок, выполняемых моим приложением, приложение использует EclipseLink в качестве ORM, и в максимально возможном количестве мест я пытался добавить подсказку для пакетного чтения к запросам. В большом количестве мест в приложении я не всегда точно знаю, какие отношения я буду пересекать (в моем представлении отображаются поля в зависимости от предпочтений пользователя). На этом этапе я хотел бы выполнить один запрос, чтобы заполнить все эти отношения для моих объектов.

Моя мечта - вызвать что-то вроде ReadAllRelationshipsQuery (Collection, RelationshipName) и заполнить все эти элементы, чтобы последующие вызовы:

Collection.get (0) .getMyStuff уже были заполнены и не вызывали запроса базы данных. Как я могу этого добиться? Я готов написать любой код, который мне нужен, но я не могу найти способ, который работает с фреймворком eclipselink?

Почему бы мне просто не прочитать все возможные поля в пакетном режиме и позволить им лениво загружаться? Я обнаружил, что держатели значений пакета, которые реализуют пакетное чтение, плохо работают с кешем eclipselink. Если держатель значения пакетного чтения не "оценивается" и попадает в кеш ссылок eclipse, он может стать устаревшим и возвращать неверные данные (это поведение было зарегистрировано как ошибка eclipselink, но отклонено ...) Мы обнаружили, что держатели значений пакета, которые реализуют пакетное чтение, плохо работают с кешем eclipselink. Если держатель значения пакетного чтения не "оценивается" и попадает в кэш ссылок eclipse, он может стать устаревшим и возвращать неверные данные (это поведение было зарегистрировано как ошибка eclipselink, но отклонено ...) Мы обнаружили, что держатели значений пакета, которые реализуют пакетное чтение, плохо работают с кешем eclipselink. Если держатель значения пакетного чтения не "оценивается" и попадает в кэш ссылок eclipse, он может стать устаревшим и возвращать неверные данные (это поведение было зарегистрировано как ошибка eclipselink, но отклонено ...) edit : Я нашел ссылку на ошибку здесь: https://bugs.eclipse.org/bugs/show_bug.cgi?id=326197

Как избежать выбора N + 1 для объектов, на которые у меня уже есть ссылка?

9
задан Michael 27 April 2011 в 10:37
поделиться