Proje içinde her method altında sürekli olarak entitymanagerfactory bağlantısı yapıyorum.Buda sürekli olarak database bağlantı açıp kapatıyor buda performansı cok etkilemektedir. Bunun için public bir entitymanagerfactory ve entitymanager olusturup methodlar içinde nasıl kullanabilirim. Aklıma gelen static olusturarak kullanmak gelmişti bunuda nasıl yapacagım hakkında tecrubeli değilim.

Bu işi nasıl halledebilirim.

soruldu: 20 Eki '12, 06:52

dJava's gravatar image

dJava
216121822
cevap kabul oranı: 9%


Sorunun cevabi EntityManager injection. Yani, sen EntityManager create etmeyeceksin, sana verilecek.

EntityManager'in sana verilmesini, yani inject edilmesini, nasil saglayacagin projeye gore degisir. Ornegin projen Java EE server da (glassfish, jboss gibi) caliyorsa konfigurasyonlara gerek kalmadan kolay yapilabiliyorken, Tomcat'de Spring veya CDI konfigurasyonlari yapman gerekir. Bu konfigurasyonlar benim uzunca zamanimi almisti, projem degil konfigurasyonlar yormustu.

EntityManager injection konularina girmeden halletmek istersen, statik bir EntityManagerFactory olusturup, bu factory uzerinden EntityManager'lar create edebilirsin.

public class JpaUtil { 
private static final EntityManagerFactory emf;

static {
    try {
        emf = Persistence.createEntityManagerFactory("MyPu");
    } catch (Throwable ex) {
        logger.error("Initial SessionFactory creation failed", ex);
        throw new ExceptionInInitializerError(ex);
    }
}

...

}

Buradaki static kod blogu, bu sinif class loader ile memory'e yuklenirken calistirilir. Kodu kopyaladigim yer http://stackoverflow.com/questions/3711439/how-to-create-a-thread-safe-entitymanagerfactory

permanent link

cevaplandı: 20 Eki '12, 08:04

Mesut's gravatar image

Mesut
60721017
cevap kabul oranı: 25%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×86
×14
×1

Soruldu: 20 Eki '12, 06:52

Görüntüleme: 843 kez

Son güncelleme: 20 Eki '12, 08:04

powered by BitNami OSQA