Я новичок в изучении Spring Boot и Spring Data JPA, и у меня есть несколько вопросов относительно отсоединенных сущностей и управления памятью.
Я узнал, что когда сущность отсоединяется, она больше не управляется контекстом персистентности. Кроме того, я понимаю, что простой вызовlush() илиclear() в контексте персистентности не обязательно означает, что отсоединенный объект немедленно удаляется из памяти.
Согласно документации Hibernate, методы detach() иclear() предназначены для удаления объектов из кэша первого уровня, что делает их пригодными для сборки мусора. Однако это кажется противоречивым, поскольку, как только объект находится в состоянии «Отсоединено», связь между объектом и Hibernate разрывается.
в документе Hibernate — 7.13. Управление кэшем сеанса (спящий режим)
Управление кэшем сеанса — экземпляры сущностей не удаляются автоматически из кэша сеанса, когда они больше не нужны. Вместо этого они остаются закрепленными в памяти до тех пор, пока сеанс, к которому они принадлежат, не будет удален вашей программой. Методы detach() иclear() позволяют удалять объекты из кэша сеанса, делая их доступными для сборки мусора. Поскольку большинство сеансов довольно кратковременны, эти операции вам не понадобятся очень часто. И если вы обнаружите, что думаете, что они вам действительно нужны в определенной ситуации, вам следует серьезно рассмотреть альтернативное решение: сеанс без сохранения состояния.
в документе Red Hat - 10.1. Состояния объекта Hibernate (redhat)
Отсоединенный — отсоединенный экземпляр — это объект, который был постоянным, но его сеанс был закрыт. Разумеется, ссылка на объект по-прежнему действительна, и в этом состоянии отсоединенный экземпляр может даже быть изменен. Отсоединенный экземпляр можно повторно подключить к новому сеансу позже, что снова сделает его (и все модификации) постоянным. Эта функция позволяет использовать модель программирования для длительных единиц работы, требующих времени на размышление пользователя. Мы называем их транзакциями приложения, то есть единицей работы с точки зрения пользователя.
Вот мои вопросы:После того, как объект становится отсоединенным и больше не управляется контекстом персистентности, где именно хранится отсоединенный объект до тех пор, пока на него снова не будет сделана ссылка?
Если ссылка нарушена между Hibernate и отсоединенный объект, как вызов метода Clear() в кэше сеанса гарантирует, что отсоединенный объект имеет право на сбор мусора?
Не могли бы вы разъяснить этот процесс и, если возможно, предоставить какие-нибудь ссылки или ссылки на соответствующую документацию?
Спасибо за ваше время и рекомендации!
Подробнее здесь: https://stackoverflow.com/questions/790 ... -hibernate
Понимание отдельных объектов и сборки мусора в Hibernate ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1728452792
Anonymous
Я новичок в изучении Spring Boot и Spring Data JPA, и у меня есть несколько вопросов относительно отсоединенных сущностей и управления памятью.
Я узнал, что когда сущность отсоединяется, она больше не управляется контекстом персистентности. Кроме того, я понимаю, что простой вызовlush() илиclear() в контексте персистентности не обязательно означает, что отсоединенный объект немедленно удаляется из памяти.
Согласно документации Hibernate, методы detach() иclear() предназначены для удаления объектов из кэша первого уровня, что делает их пригодными для сборки мусора. Однако это кажется противоречивым, поскольку, как только объект находится в состоянии «Отсоединено», связь между объектом и Hibernate разрывается.
в документе Hibernate — 7.13. Управление кэшем сеанса (спящий режим)
Управление кэшем сеанса — экземпляры сущностей не удаляются автоматически из кэша сеанса, когда они больше не нужны. Вместо этого они остаются закрепленными в памяти до тех пор, пока сеанс, к которому они принадлежат, не будет удален вашей программой. Методы detach() иclear() позволяют удалять объекты из кэша сеанса, делая их доступными для сборки мусора. Поскольку большинство сеансов довольно кратковременны, эти операции вам не понадобятся очень часто. И если вы обнаружите, что думаете, что они вам действительно нужны в определенной ситуации, вам следует серьезно рассмотреть альтернативное решение: сеанс без сохранения состояния.
в документе Red Hat - 10.1. Состояния объекта Hibernate (redhat)
Отсоединенный — отсоединенный экземпляр — это объект, который был постоянным, но его сеанс был закрыт. Разумеется, ссылка на объект по-прежнему действительна, и в этом состоянии отсоединенный экземпляр может даже быть изменен. Отсоединенный экземпляр можно повторно подключить к новому сеансу позже, что снова сделает его (и все модификации) постоянным. Эта функция позволяет использовать модель программирования для длительных единиц работы, требующих времени на размышление пользователя. Мы называем их транзакциями приложения, то есть единицей работы с точки зрения пользователя.
Вот мои вопросы:После того, как объект становится отсоединенным и больше не управляется контекстом персистентности, где именно хранится отсоединенный объект до тех пор, пока на него снова не будет сделана ссылка?
Если ссылка нарушена между Hibernate и отсоединенный объект, как вызов метода Clear() в кэше сеанса гарантирует, что отсоединенный объект имеет право на сбор мусора?
Не могли бы вы разъяснить этот процесс и, если возможно, предоставить какие-нибудь ссылки или ссылки на соответствующую документацию?
Спасибо за ваше время и рекомендации!
Подробнее здесь: [url]https://stackoverflow.com/questions/79068701/understanding-detached-entities-and-garbage-collection-in-hibernate[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия