1
我正在使用EntityManager將數據保存到我的數據庫中。什麼時候EntityManager的flush()方法返回?
public void save(X x){
entityManager.persist(x);
entityManager.flush();
triggerDataChange();
}
沖洗數據後我調用triggerDataChange()方法來將消息發送到依賴於新寫入數據的外部組件。
問題:我可以依賴於在之後返回的刷新方法,數據是否已成功寫入數據庫?
感謝您的幫助。
是的,刷新將更改提交給數據庫。 (但它仍然可以回滾。) – 2012-02-21 10:07:52
順便說一句:如果您使用休眠,請查看可能的刷新模式:http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html – 2012-02-21 10:10:16
我認爲當他說「將更改提交給數據庫」時,他的意思是「不提交對數據庫的更改」8 =}。你的其他應用程序將不得不從數據庫讀取未提交的數據,這是不常見的事情。真的,你可能想要的是提交數據(即完成交易),然後調用你的外部系統。否則,外部系統可能會根據可能回滾的數據做出決定。 – davidfrancis 2012-02-21 11:22:02