1
我有下面的代碼:爲什麼session.setFlushMode(FlushMode.MANUAL)之後數據存儲到數據庫中? session.save(); (休眠)
Color color = new Color(null,"B12",null,1);
Session session=sessionFactory.openSession();
session.setFlushMode(FlushMode.MANUAL);
session.beginTransaction();
session.save(color);
session.clear();
session.getTransaction().commit();
session.close();
sessionFactory.close();
我只是不明白爲什麼它的數據時,我指定的沖洗是手動存儲到數據庫?請幫我弄明白!
你看我讀了一本名爲「JAVA持久性與湖泊」的書籍Christian Bauer,Gavin King,下面是它的一句話:「通過選擇FlushMode.MANUAL, 你可以指定只顯式調用flush與數據庫的受管狀態同步 「。在我的代碼示例中沒有明確調用flush(),那麼爲什麼它仍然存儲到數據庫中,也許還有別的東西我不知道? –
通常情況下,調用數據庫將自動導致刷新。 Flushmode.MANUAL的行爲與引用的句子相似。具體提交意味着將更改保存到數據庫。這是描述它更好http://stackoverflow.com/questions/14622962/what-is-transaction-commit-in-hibernate – darthNater
謝謝,我想我明白,但仍然有一點questian,我edding編輯我的代碼session.clear ()在session.save()之後。文檔說明了有關方法clear()的內容:「退出所有已加載的實例並取消所有未完成的保存,更新和刪除」。爲什麼不取消save()並仍然將數據存儲到數據庫? –