新春天這裏@stackoverflow春@Transactional合併,堅持問題
我建立一個獨立的庫存&銷售總代理業務跟蹤應用程序(Apache的樞軸/春/ JPA /休眠/ MySQL的) 。
到目前爲止,我認爲一切都是CRUD,所以我打算給所有@Transactional創建一個基類。
然後我遇到了一個問題,我的保存通用方法。 Spring的EntityManager的持久化和合並方法有區別嗎?我試着運行並調用保存插入和更新,它工作正常(我認爲每次我調用我的save方法時,彈簧自動刷新實體//看到記錄的hibernate查詢,是嗎?)。
@Transactional
public abstract class GenericDAO {
protected EntityManager em;
// em [email protected]/setter
public void save(T t) {
// if (t.getId() == null) // create new
// {
// em.persist(t);
// } else // update
// {
em.merge(t);
// }
}
}
順便說一句,有這樣的設置,我不會有太大的妥協表現吧?就像調用salesDAO.findAll()來生成報告一樣(不需要是事務性的,對嗎?)。
謝謝!!!
我是客人,這是最簡單的方法。 因此,如果我有JpaDaoSupport,並且從中獲取實體,那麼所有更改都將自動提交? 我想我會有兩種變型的保存方法,一種保持不變,一種調用flush。對此有何評論? – thirdy 2009-10-19 02:07:12
你的意思是在沒有保存或更新的情況下自動執行嗎?如果是這樣,我不這麼認爲,我總是調用保存在一個新的實體或更新現有的實體來堅持。我從來不需要調用flush方法,但是對於任何給定的請求,我的數據庫訪問非常簡單。 – 2009-10-19 03:19:11
我現在不得不放棄嘗試Spring。只是好奇,Grails如何改進呢?我不會在Grails中遇到類似這樣的問題嗎? – thirdy 2009-10-19 13:49:03