что означает синхронизация в спящем режиме - PullRequest
1 голос
/ 04 апреля 2010

Я прочитал это после session.flush ()

The данные будут синхронизированы (но не зафиксированы) при вызове session.flush ()

что синхронизируется с чем .. будь то состояние БД, которое придет в память путем запроса или состояние памяти будет скопировано в Db?

уточнить это плз ..

Ответы [ 3 ]

1 голос
/ 04 апреля 2010

Вызов session.flush() приведет к тому, что операторы SQL будут сгенерированы для всех внесенных вами изменений, и эти операторы SQL будут выполнены в базе данных в рамках транзакции sessios.

Car car = (Car) session.get(Car.class, 1);
car.setModel("Mustang");
session.flush();

Последняя строка вызовет оператор UPDATE в базе данных. Однако, в зависимости от того, как вы обрабатываете транзакции в своих приложениях, это изменение может быть невидимым для других пользователей, прежде чем вы совершите транзакцию, удерживаемую разделом.

Хотя очистка на самом деле не является двунаправленной операцией, ее можно использовать для обеспечения того, чтобы автоматически сгенерированный идентификатор был назначен новому объекту сущности. Если класс Car сопоставлен с таблицей базы данных с автоматически увеличивающимся идентификатором, вы можете использовать сброс, чтобы убедиться, что этот идентификатор доступен для объекта домена в коде вашего приложения:

Car car = new Car();
car.setModel("Torino");
session.save(car);

System.out.println(car.getId());               // prints 0
session.flush();
System.out.println(car.getId());               // prints something larger than 0

Скажем, вы хотите отправить электронное письмо со ссылкой на недавно созданный автомобиль (хорошо, учетная запись пользователя имела бы больше смысла), но если письмо не может быть отправлено, вы хотите откатить транзакцию. Сброс сеанса позволяет вам сделать это.

1 голос
/ 04 апреля 2010

Сброс синхронизирует базовое постоянное хранилище с постоянным состоянием, хранящимся в памяти, но не и наоборот.Другими словами, «в состоянии памяти копируется в базу данных» в текущей транзакции, чтобы повторно использовать ваши слова.Обратите внимание, что очистка не означает, что данные нельзя откатить.

1 голос
/ 04 апреля 2010
"Flushing is the process of synchronizing the underlying persistent
store with persistable state held in memory."

По умолчанию режим очистки установлен на AUTO, и в этом случае сеанс сбрасывается перед выполнением запроса, чтобы запросы никогда не возвращали устаревшее состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...