Я хотел бы сохранить отношения родителя/ребенка, но когда я разбираюсь в родительском объекте, я не хочу извлекать дочерние элементы.Какой безопасный способ удалить ленивые прокси-серверы инициализации, созданные Hibernate?
ответ
Прокси генерируются так, что Hibernate может перехватывать вызовы в неинициализированные ассоциации и пытаться их получать по требованию.
LazyInitializationException
- код запаха. Вы получаете его, потому что вы не правильно инициализировали все обязательные ассоциации сущностей до закрытия Session
. Переключение на ассоциации EAGER также является bad idea, потому что политика выборки является ответственностью за запрос.
Попробуйте уменьшить количество ассоциаций, если они вам не нужны, и вместо этого используйте запросы. Вы можете создать приложение с несколькими ассоциациями (зеркалирование отношений FK), и вместо ассоциаций «один ко многим» вы можете использовать методы DAO.
Что касается этого заявления:
Я хотел бы сохранить отношения родителя/ребенка, но когда я анализирую через родительский объект, я не хочу получать дочерние элементы.
Если вы сохраняете связь между родителями и детьми, вам всегда нужно загрузить ассоциацию до ее использования. Попытка удалить прокси-серверы звучит так, будто вы пытаетесь взломать решение, а не правильно разрабатывать свои уровни приложений.
Так что прокси - это хорошо, и они позволяют улучшить производительность приложения, потому что вы не всегда получаете все ассоциации при попытке получить доступ к корневому объекту.
Чтобы отключить прокси вы просто должны аннотировать объекты с Proxy аннотацию:
@Proxy(lazy=false)
- 1. Какой безопасный способ «удалить» новые данные/объекты?
- 2. Безопасный способ для инициализации производного класса
- 3. Какой самый безопасный способ удалить данные из mysql? (PHP/Mysql)
- 4. Какой безопасный и простой способ удалить каталог в Ruby?
- 5. PHP: безопасный способ удалить каталог?
- 6. Какой способ инициализации списка лучше
- 7. Hibernate: ленивые коллекции и session.merge
- 8. Hibernate ленивые загрузки бросков JsonMappingException
- 9. Какой самый безопасный способ для загрузки файла?
- 10. Какой самый безопасный способ запустить ненадежный URL?
- 11. Какой самый безопасный способ управлять Rails database.yml?
- 12. Какой самый безопасный способ отправки уязвимых файлов?
- 13. Kinesis: Какой лучший/безопасный способ закрыть рабочего?
- 14. Безопасный способ удалить функциональность из Android-приложения
- 15. JPY и EJB ленивые поля инициализации
- 16. Hibernate3 -> Hibernate 4 и вопросы (Ленивые ...)
- 17. Hibernate + PostgreSQL: ленивые погрузки с эксклюзивными замками
- 18. Безопасный способ удалить старую версию питона
- 19. Kotlin объект. Какой способ инициализации прав?
- 20. Безопасный способ инициализации атрибутов из yaml или hash
- 21. Безопасный способ инициализации плагина, который зависит от настроек проекта
- 22. Самый безопасный способ инициализации двойной переменной в java
- 23. Hibernate инициализации SessionFactory
- 24. Исключение инициализации Hibernate lazy
- 25. Hibernate ленивое требование инициализации
- 26. Какой самый безопасный способ протестировать сервер локальных рельсов?
- 27. Какой самый безопасный способ авторизации пользователя в Android?
- 28. MySQL & JDBC: Какой самый безопасный способ управлять несколькими схемами?
- 29. Какой лучший/безопасный способ запускать метод async на pageload?
- 30. Какой самый безопасный способ конвертировать таблицу с InnoDB в MyISAM?
http://in.relation.to/2006/01/26/persistent-collections-are-a-feature/ –
В первую очередь спасибо .. Вот моя забота ... Вы сказали: «Вместо ассоциаций« один-ко-многим »вы можете иметь методы DAO». Без одной из многих ассоциаций я не смогу использовать явные объединения для сложных запросов .... С ассоциацией «Один на много», «Ленивая инициализация», мы анализируем весь объект с помощью Jax-B, к нему будет обращен дочерний элемент и он будет извлечен .., что не нужно и потеря производительности. Также @Proxy (lazy = false) не приносит прокси, но он извлекает весь дочерний элемент. Это лишний раз и потеря производительности. Дайте мне знать, если у вас есть какие-либо предложения. – user1172766
Ну, выборка объектов имеет смысл, когда вы планируете их модифицировать. В вашем случае проекция более уместна и всегда будет работать лучше. Вы можете написать переносимый natie-запрос, и вы можете получить только данные, необходимые для вашего варианта использования. –