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

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • pleated-jeans

    pleated-jean

    6 HAZİRAN 2013
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008