Разница между FlushMode.AUTO и FlushMode.ALWAYS в спящем режиме? - PullRequest
6 голосов
/ 01 апреля 2010

Прошел спецификацию API Hibernate на FlushMode, но не получил точную разницу. Поэтому, пожалуйста, помогите.

Ответы [ 2 ]

5 голосов
/ 01 апреля 2010

Если режим сброса «AUTO» перед запуском любого спящего режима запроса, проверит, есть ли какие-либо таблицы для обновления. Если это так, сброс будет выполнен, иначе нет. Если режим сброса «ВСЕГДА», сброс будет происходить, даже если нет таблиц для обновления.

Проверка источника, org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush (AutoFlushEvent)

2 голосов
/ 01 апреля 2010

Всегда означает, что перед выполнением любого запроса к коллекции или такого запроса запрос повторно выполняется к базе данных. Я полагаю, что с auto есть какая-то "магия" под капотами, которая знает, что большинство данных не меняется так часто, поэтому вам не всегда нужно сбрасывать. Это также влияет на то, как часто это может происходить во время транзакции. Я сказал бы, потому что некоторые источники говорят, что установка flushmode - это только подсказка для спящего режима - но посмотрите эту ветку для обсуждения ...

http://forum.springsource.org/archive/index.php/t-14044.html

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