SORU
1 Temmuz 2009, ÇARŞAMBA


JPA EntityManager: kullan ısrar Niye() Birleştir()?

EntityManager.merge() yeni nesne eklemek ve mevcut olanları güncelleyebilirsiniz.

Neden bir persist() yalnızca yeni nesneler oluşturmak () kullanmak isteyeyim?

CEVAP
1 Temmuz 2009, ÇARŞAMBA


Her iki şekilde de bir PersistenceContext bir varlık katacak, fark, varlık ile daha sonra ne olduğunu.

Kalıcı bir varlık örnek alır, içerik ekler ve bu örneği başardı (varlık yani gelecekteki güncellemeler takip edilecek) yapar.

Birleştirme senin varlığın yeni bir örneğini oluşturur, verilen varlık durumunu kopyalar, ve yeni bir kopyasını yönetilen yapar. Senin geçtiğin örneği (yaptığınız değişiklikler yeniden birleştirme çağrısı sürece, bu işlemin bir parçası olacaktır) yönetilmez.

Belki bir kod örneği yardımcı olacaktır.

MyEntity e = new MyEntity();

// scenario 1
// tran starts
em.persist(e); 
e.setSomeField(someValue); 
// tran ends, and the row for someField is updated in the database

// scenario 2
// tran starts
e = new MyEntity();
em.merge(e);
e.setSomeField(anotherValue); 
// tran ends but the row for someField is not updated in the database
// (you made the changes *after* merging)

// scenario 3
// tran starts
e = new MyEntity();
MyEntity e2 = em.merge(e);
e2.setSomeField(anotherValue); 
// tran ends and the row for someField is updated
// (the changes were made to e2, not e)

Senaryo 1 ve 3 kabaca eşdeğerdir, ama Senaryo 2 kullanmak istediğiniz bazı durumlar vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • sghaff1

    sghaff1

    23 Mart 2009
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009