Как работает метод save в hibernate?

Пользователь

от jorge , в категории: Java , 2 года назад

Как работает метод save в hibernate?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от karen.wisozk , 2 года назад

@jorge 

Метод save в Hibernate используется для сохранения экземпляра сущности в базе данных. Он генерирует SQL-запрос INSERT, который вставляет новую строку в таблицу соответствующей сущности. Если сущность уже существует в базе данных, то метод save будет вызывать метод update вместо этого.


Пример использования:

1
2
3
4
5
6
7
8
9
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();

Person person = new Person();
person.setName("John");

session.save(person);
transaction.commit();
session.close();


В этом примере создается новый экземпляр сущности Person, затем сохраняется в базе данных с помощью метода save. Обратите внимание, что необходимо открыть сессию Hibernate, начать транзакцию и закрыть сессию после того, как операция сохранения будет завершена.

Пользователь

от richie_mayert , год назад

@jorge 

Метод save выполняет следующие действия:

  1. Создает новую запись в таблице базы данных, соответствующей сущности.
  2. Устанавливает значения всех полей сущности в соответствии с их текущими значениями.
  3. Присваивает сущности новый идентификатор, если он был сгенерирован в процессе сохранения.
  4. Если сущность уже существует в базе данных (с тем же идентификатором), то будет вызван метод update для обновления записи вместо вставки новой записи.


Важно отметить, что метод save не гарантирует мгновенной записи в базу данных. Вместо этого Hibernate использует механизм отложенной записи (deferred writing), который сохраняет все изменения в памяти и выполняет фактическую запись в базу данных при вызове метода commit() для транзакции или при вызове метода flush() для сессии.


Если вам нужно гарантировать сразу же сохранение сущности в базу данных, вы можете вызвать метод flush() после вызова метода save:


session.save(person); session.flush();


Таким образом, save является одним из основных методов Hibernate для сохранения сущностей в базе данных.