EntityManger注入了@PersistenceContext
註釋。這是我的「DAO/Repository」類沒有註釋的一種方法。這個類被注入到需要從/到數據庫中獲取數據的EJB中。EntityManager.persist()後會發生什麼
到現在爲止,我認爲在下面的persist方法完成後,persistencecontext被刷新並且數據被存儲到數據庫,但是從我的應用程序中發生的事情開始懷疑這一點。我已經在Glassfish中創建了數據源和連接池,因此我使用容器管理事務,但是我沒有使用任何事務註釋。
難道有人能爲我提供一些啓示嗎?
public void persist(QuestionFeedback questionFeedback) {
questionFeedback.setCreated(new Date());
entityManager.persist(questionFeedback);
}
中使用GlassFish 3,Java的兼容性EE6
所以你在說什麼是業務方法打開和關閉事務(在我的代碼中調用上面的持久方法的那個),然後事務被提交?或者我誤解了你? – LuckyLuke 2012-01-15 14:05:54
是的,如果調用persist方法的方法的客戶端沒有事務上下文。然後在你的情況下,容器必須在方法的開始和結束時保持對事務的開始和提交的關注。如果客戶端有現有的事務,那麼你的方法加入到這個事務中,並且提交發生在客戶端的某個地方。沒有定義的事務屬性,這些方法調用有多少層並不重要,邏輯保持不變:在第一個事務中啓動並提交事務。 – 2012-01-15 14:17:41