2012-02-09 28 views
1

我將一系列文件加載到我的應用程序中,並檢查每個文件是否包含任何圖像,如果存在,我然後生成圖像數據的校驗和,並檢查圖像是否已經存在於數據庫中,如果不存在我將它添加到數據庫中。所有數據庫的東西都是通過Hibernate完成的。如果嘗試添加它,Hibernate如何解決記錄是否已經存在?

這很好,當我的代碼是單線程的,但是當它是多線程的調用來檢查圖像是否在數據庫中可能會返回false,但當我嘗試插入它可能已被另一個線程添加然後,我必須處理該異常,並再次嘗試獲取圖像,以便我可以將其返回。

有什麼我可以在Hibernate中幫助我做什麼,所以我不必做這個額外的編碼工作?

回答

1

如果校驗是持久化的圖像數據庫鍵(你不使用自動生成的鍵),您可以使用Session.merge()

複製給定對象的狀態到與持久化對象相同的標識。如果當前沒有與會話關聯的持久實例,則會加載它。返回持久化實例。如果給定實例未保存,則保存一個副本並將其作爲新的持久實例返回。給定的實例不會與會話關聯。

Modifying detached objectsHibernate referenceHibernate Core JavaDocs以獲取更多信息。

+0

謝謝,似乎正在工作 – 2012-02-09 14:15:06

相關問題