Сеанс в Hibernate-это кэш первого уровня, который можно понимать как кэш на уровне процесса (стержня), который существует во время запуска процесса (стержня потока).
Сеанс может быть понят как объект, который может управлять базой данных, и существуют методы управления базой данных в этом объекте.
В Java кеш обычно относится к пространству памяти, занятым свойствами объектов Java, обычно некоторых атрибутов типа коллекции. Серия коллекций Java определена в сеансе сеанса сеанса сеанса, и эти коллекции Java образуют кэш сеанса.
В целом (мое понимание сеанса): сессия - это средний (объект) между Hibernate и DB. В сеансе есть две вещи или функции.
(1) Методы работы базы данных
(2) В сеансе есть некоторые атрибуты (наборы и т. Д.), Которые используют эти атрибуты для хранения языка SQL, который будет отправлен в DB, кэшируйте данные, которые были найдены из DB и т. Д.
Кеш сеанса
Кэш сессии состоит из серии коллекций Java. Когда объект добавляется в кэш сеанса, ссылка на этот объект добавляется в коллекцию Java. В будущем, даже если эталонная переменная в приложении больше не относится к объекту, если кэш сеанса не будет очищен, объект останется в своем жизненном цикле.
Роль сессионного кеша:
1) Уменьшите частоту доступа к базе данных.
2) Убедитесь, что объекты в кэше хранятся в синхронизации с соответствующими записями в базе данных.
Время очистить кеш в сеансе:
1) Когда метод транзакции Commit () транзакция вызывает, метод Commit () сначала очищает кэш (при условии, что flushMode.commit/auto), а затем передает транзакции в базу данных.
2) Когда приложение вызовет Sessions () или Itater (), если свойства постоянного объекта в изменении кэша, кэш будет сначала очищен, чтобы убедиться, что результаты запроса могут отражать последний статус постоянного объекта.
3) Когда приложение отображает метод flush () сеанса.
В то время, когда режим очистки сеанса выполняет работу кэша очистки:
Интерфейс сеанса
Интерфейс сеанса является наиболее важным интерфейсом, предоставленным Hibernate для приложений для манипулирования базами данных. Он предоставляет основные методы для сохранения, обновления, удаления и запросов.
1.save (): добавьте временный объект в кеш, и он становится постоянным объектом
-> Выберите генератор первичных клавиш, указанный в файле отображения, чтобы назначить уникальный OID на постоянный объект
-> Планируйте оператор INSERT для сборки текущего значения свойства объекта параметра в оператор INSERT, но метод SAVE () не выполняет оператор SQLINSERT немедленно и будет выполнен только тогда, когда сеанс очищает кеш.
-> Если свойства постоянного объекта изменяются после метода сохранения (), сеанс выполнит дополнительные операторы SQLupdate при очистке кэша.
Примечание. Метод сохранения () используется для сохранения временного объекта!
Если вы передаете постоянный объект методу Save (), операция не будет выполнена, избыточные шаги
Если объект свободного состояния передается методу Save (), сеанс обрабатывает его как временный объект и снова вставит запись в базу данных, что не отвечает потребностям бизнеса!
2. Update (): повторно добавьте объект клиента в кэш сеанса и превратите его в постоянный объект.
---> Запланировать оператор обновления, который будет выполняться только при очистке кэша, а значения атрибута в объекте параметра будут собраны в оператор обновления при его выполнении.
Примечание: Update () преобразует свободный объект в постоянный объект.
Пока свободный объект связан с сеансом через метод Update (), сеанс выполнит оператор обновления, запланированный методом обновления при очистке кэша.
3.saveorUpdate (): он содержит как функции save (), так и методов Update (). Если пропущенный параметр является временным объектом, вызовите метод сохранения. Если параметр является бесплатным объектом, вызовите метод Update (). Если пропущенный параметр является постоянным объектом, верните напрямую.
4.load ()/get (): они загружат постоянный объект из базы данных на основе данного OID. Разница состоит в том, что когда нет записи, соответствующей OID в базе данных, метод Load () будет выбросить исключение ObjectNotFoundException, а метод get () будет возвращать NULL.
5.delete (): используется для удаления записей, соответствующих объектам параметров из базы данных. Если пройденное параметр является постоянным объектом, сеанс планирует выполнить оператор DELETE. Если пропущенный параметр является свободным объектом, сначала сделайте свободный объект, связанный с сеансом, чтобы сделать его постоянным объектом, а затем спланируйте оператор DELETE для выполнения при очистке кэша.
6. evict (): очистить постоянный объект, указанный параметром из кэша.
Применимые случаи: вы не хотите, чтобы сеанс продолжал синхронно обновлять базу данных в соответствии с состоянием объекта.
В случае пакетного обновления или удаления партии, когда объект обновляется или удаляется, память, занятая объектом, выпускается во времени. Конечно, партийные операции уделяют приоритет JDBC.
7.clear (): очистить все постоянные объекты в кэше.
Суммировать
Вышесказанное - это быстрое понимание всего содержания сеанса в Hibernate, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!