2012年9月4日 星期二

JPA EntityManager merge, persist 的用法

persist ():用來新增一筆資料
merge (): 用來新增或修改一筆資料


Entity1 e = new Entity1();

// scenario 1
//交易開始
em
.persist(e);
e
.setField1(Value); 
// 交易結束後, Field1 會自動更新至資料庫

// scenario 2
// 交易開始
e
= new MyEntity1();
em
.merge(e);
e
.setField1(anotherValue); 
// 交易結束後,Field1 不會更新至資料庫,除非你再作一次 merge


// scenario 3
// 交易開始
e
= new Entity1();
Entity1 e2 = em.merge(e);
e2
.setField1(anotherValue); 
// 交易結束後,Field1 會自動更新至資料庫,但是指 e2 不是 e




參考文件
http://caterpillar.onlyfun.net/Gossip/EJB3Gossip/EntityManager.html
http://stackoverflow.com/questions/1069992/jpa-entitymanager-why-use-persist-over-merge
http://blog.csdn.net/javavenus/article/details/6289616

沒有留言:

張貼留言