2
我在使用hibernate,想知道hibernate在處理多個用戶請求時如何處理。Hibernate保存方法和併發
@Transactional on數據層方法。
User user = new User();
user.setCreatedBy("TestSad");
user.setUsername("TestSadd");
Integer id = (Integer) this.sessionFactory.getCurrentSession().save(user);
// put the debug point here
int i = 1;
if(i ==1){
// intentionally i was throwing exception as i dont want to save
throw new NumberFormatException();
}
對於我的測試中,我已經打開一個瀏覽器Chrome和打我得到的值加一,什麼是目前在分貝ID交易。我沒有關閉調試點。說id = 10 之後,我已經打開了另一個瀏覽器的Firefox和擊中事務我得到的ID值增加了我在調試過程中使用鉻瀏覽器。 say id = 11
下一個場景。 我已重新啓動服務器。 再次繼續上面的步驟,我得到的值每增加一。說ID 12.
因此,它的真正好的休眠正在這樣工作,以避免問題。 我已經通過谷歌論壇瞭解它如何工作,但沒有得到它。 hibernate是如何在內部處理ACID的? 有人可以幫助我理解它。只是好奇知道。
請參考下面的答案。 http://stackoverflow.com/questions/3616321/concurrent-updates-handling-in-hibernate –
或者可能檢查此[答案](http://stackoverflow.com/questions/22030448/is-sessionfactory-getcurrentsession-thread-安全/ 22030598#22030598)。 – AntJavaDev