爲了記錄,我正在使用Neo4j 2.0.0-M02。Neo4j中的嵌套事務
我目前有一種方法,可以在其圖標中存儲的用戶標識爲「User」的節點上搜索節點屬性「id」。這一切都發生在一個事務中,因爲它會自動關閉ResourceIterator。
現在,我想創建兩個用戶之間的關係。我擁有的是他們的用戶名。現在,我顯然希望重用通過其ID搜索用戶的方法。我可以想到三種方法。
第一個是明顯的。用已經存在的方法檢索兩個節點。比調用創建它們之間關係的方法。顯然這也發生在一個事務中,所以這需要三個事務。沒那麼高效。
第二個只是重用創建關係的新方法中的代碼(而不是方法)。這樣,我可以在一次交易中完成所有工作,但是我重複了代碼,這對開發人員來說不是很好的做法。
第三個是在創建關係的新方法的事務中調用現有方法兩次。這樣我的代碼仍然可以重用,但我不確定嵌套事務在Neo4J中是如何工作的。現有方法的交易是否會被忽略,因爲已有交易?這將解決我的問題。
如果不是,我不得不重新考慮我在哪裏管理我的交易。我知道在服務中管理它們通常比在DAO中更好,但是我想將Neo4j的東西放在我的服務類中。
所以如果在otherMethod中發生錯誤,整個事務將被回滾,對吧? – 2013-05-08 12:37:57
如果已調用tx.failure()或NOT tx.success(),則事務將回滾。所以在這種情況下,是的 – 2013-05-08 12:56:37