model.save()

17 views
Skip to first unread message

Ahmet Ates

unread,
Nov 28, 2012, 4:40:49 AM11/28/12
to play-fra...@googlegroups.com, kutuni
Merhabalar, 

......
model.save()
.....
...

bu islemden hemen sonra yeni kayda find() kullanmadan erismek mumkunmudur, bir yolu varmidir.

Tesekkurler. 

Serdar Coşkun

unread,
Nov 28, 2012, 4:44:41 AM11/28/12
to play-fra...@googlegroups.com
Merhaba,

Play normalde model.save() işleminden sonra model.flush işlemini thread bitiminde yapıyor. Eğer hemen kayıt ettiğiniz anda verinin veritabanına eklenmesini istiyorsanız modeli kaydedip flush etmeniz gerekiyor.

Bunu ben şu şekilde bir çağrı kullanarak yapıyorum, bu çağrı direkt JPA üzeirnden çağırıldığı için generictir, her türlü model.save işleminden sonra çağırarak veriyi kaydedebilirsiniz:

private void saveJPAEntity(){
JPA.em().getTransaction().commit();
JPA.em().getTransaction().begin();
JPA.em().flush();
JPA.em().clear();

Serdar Coşkun

unread,
Nov 28, 2012, 4:57:19 AM11/28/12
to play-fra...@googlegroups.com
Eklemeyi unutmuşum,

Eğer çok veri içeren bir işlem ile çalışıyorsanız bu çağrıyı her 100 veya 1000 , vs… işlemde bir yapmanız daha verimli olacaktır.

Fehmi Can Sağlam

unread,
Nov 28, 2012, 5:16:32 AM11/28/12
to play-fra...@googlegroups.com, kutuni

Soru ve konu pek anlaşılır değil ama anladığım kadarıyla yanıt vermeye çalışayım.

MyModel myModel=...
...
myModel.save();

işlemi yapılıyorsa kayıt zaten myModel nesnesidir. Eğer save işlemi bir INSERT oluşturmuşsa id alanı artık doludur. myModel.id ile bu bilgiye ulaşılabilir.

Transaction, response döndükten sonra commit edileceği için yeni kayıt veritabanında görünmemektedir(transaction isolation levela göre degisir tabi).

Veritabaninda calisan trigger var ise myModel.refresh değişen bilgileri yükler(yüklemesi gerekir). Fakat trigger kullanmayı elbette onermiyoruz.

Manual transaction yönetimi konusunda Serdar'a ek olarak @NoTransaction içinde JPAPlugin.beginTransaction ve endTransaction bloklarını daha okunur ve self-documented buluyorum.

28 Kas 2012 11:40 tarihinde "Ahmet Ates" <a.ka...@gmail.com> yazdı:

Ahmet Ates

unread,
Nov 28, 2012, 5:40:01 AM11/28/12
to play-fra...@googlegroups.com, kutuni
Fehmi hocam, dedigin gibi model.save() den hemen sonra model.id yeni nid degerini iceriyor, bense icermiyor diye tecrube etmistim, ve her save isleminden sonra bide find mi etmeliyiz diye dertlenmistim. 

Cevaplar icin cok tesekkur ederim. 
Reply all
Reply to author
Forward
0 new messages