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
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.
Nasıl sekme yerine boşluk kullan için ...
Bir alana birden çok MySQL satırları B...
Sudo nasıl bir konuma çıkış yönlendirm...
En iyi yolu, bir istemci üzerinde bird...
Neden Java'In hashCode() Dize çar...