Forum İçeriği > Persistence API's > Uzmanlık Sorusu

Serhat Meşe 21 ay önce
Aktivite Puanı: 62
Merhaba; Ejb3 ve hibernate kullanilan bir projede asagidaki gibi bir stateless session beanimiz oldugunu dusunelim. Bu session bean icinde addEntity diye bir yontemimiz var. Bunun icinde once entity'i persist ediyoruz. Daha sonra mail atiyoruz. Bu islemler try-catch icinde oluyor. Dolayisiyla entity kaydedilemiyorsa, mail atmamasini bekliyoruz. Ancak bu sekilde olmuyor. Mail atiliyor ama exception da firlatiliyor. Exception ise Hibernate GenericJdbcException : data too long for column xxxx gibi birsey. Ben sebebini buldum ve duzeltmeyi yaptim. Peki sizce exception olusmasina ragmen niye mail atiliyor? @Stateless public class DenemeBean implements DenemeLocal { @PersistenceContext private EntityManager entityManager; public void addEntity(Entity a){ try{ entityManager.persist(a); sendMail(); }catch(Exception e){ e.printStackTrace(); } } }
musutafu 21 ay önce
Aktivite Puanı: 4
sendMail bir thread çağırıyor olabilirmi
Serhat Meşe 21 ay önce
Aktivite Puanı: 62
Merhaba, sendMail bir thread cagirmiyor. Burdaki problem daha cok entityManager.persist ile ilgili. em.persist objeyi veritabanina yazacak duruma getiriyor ancak yazmiyor. Bu durumda kolonlarin uzunluklari ile ilgili olusabilecek bir exceptioni o anda olusturamiyor. Dolayisiyla entityManager.persist calisiyor arkasindan mail gonderiliyor ve yontem bittigi zaman transaction bitiriliyor ve obje veritabanina yazilmaya calisiliyor. Tam bu sırada exception aliniyor. Ama tabi ki işlem yapilmiş gibi mail atiliyor. Bu durumun onune gecmek icin entityManager.persist satirindan sonra entityManager.flush satirini ekledim. Boylece persist yontemini cagirdiktan sonra objeyi veritabanina yazmaya zorluyorum. Veritabanina yazamadigi icin exception firlatiyor ve dolayisiyla mail de gonderilmemis oluyor. Yeni kod asagidaki gibi oldu. @Stateless public class DenemeBean implements DenemeLocal { @PersistenceContext private EntityManager entityManager; public void addEntity(Entity a){ try{ entityManager.persist(a); entityManager.flush(); sendMail(); }catch(Exception e){ e.printStackTrace(); } } } iyi calismalar...
Gökalp Gürbüzer 20 ay önce
Aktivite Puanı: 64
sorununuzu çözdüğünüze sevindim, yine de transaction denetimini dahil bütün veritabanı işlemlerini DAL seviyesinde yapmanızı öneririm. Bean'lerin bağımlılıklarını mümkün mertebe azaltarak farklı yerlerde de rahatlıkla kullanılmasını sağlayabilirsiniz.

Latest Activity

yeni bir mesaj yolladı. TopLink EclipseLink
5 ay önce
mesaja yanıt verdi RE: HttpClient.
6 ay önce
mesaja yanıt verdi RE: HttpClient.
7 ay önce
yeni bir mesaj yolladı. HttpClient
7 ay önce
yeni bir mesaj yolladı. HttpClient
7 ay önce
yeni bir mesaj yolladı. Birt ile Raporlarma
10 ay önce
mesaja yanıt verdi RE: Hibernate.
10 ay önce
mesaja yanıt verdi RE: wicket kendi sayfama yonlendirme.
10 ay önce
yeni bir mesaj yolladı. wicket kendi sayfama yonlendirme
11 ay önce
yeni bir mesaj yolladı. wicket kendi sayfama yonlendirme
11 ay önce

Top Contributors

71
ertugrula
53
Abdulkadir Selcukoglu
49
Altuğ Bilgin Altıntaş
32
wicket_id_tolga
30
Serhat Meşe