Что сбрасывается сессией Hibernate Slf.flush () - PullRequest
1 голос
/ 16 июня 2011

Что именно происходит, когда я вызываю Session.flush () в открытом сеансе гибернации?Все ли сущности, которые я изменил (сохранил, удалил, обновил) с сохранением / обновлением / удалением, записаны в базу данных, или ВСЕ сущности в сеансе записаны в базу данных, также если я не вызывал обновление и т. Д. На них?

Я нахожу множество ресурсов Hibernate, говорящих об этом, но ничто не дает мне точно точный ответ, который я ищу.

Простые примеры:

class A {

    @OneToOne
    public B b;

    public int x;
}

class B {

    @OneToOne(mappedBy="b")
    public B b;

    public int y;
}


// Example
A a = aDao.load(...);
a.x = 20;
b.y = 15;
aDao.update(a);

// Question: Will this update b's value to 15 in the database?
session.flush();

Если Bбудет обновлен в примере выше, как я могу предотвратить это?

Спасибо за вашу помощь!

1 Ответ

4 голосов
/ 16 июня 2011

Все изменения записываются в базу данных. Объекты, которые вы не создали / не изменили / не сохранили.

Я не уверен, что происходит с такими вещами, как obj.setName(obj.getName()) (т.е. когда вы касаетесь свойства, но не меняете его).

...