Merhaba. Hibernate ORM kütüphanesinde SessionFactory sınıfında yeni bir session oluşturmak için openSession() ve getCurrentSession() metodları bulunmaktadır. Bu metodların farkları nelerdir? Hangisi ne zaman kullanılmalıdır?

soruldu: 26 Şub '14, 11:18

querman's gravatar image

querman
391162028
cevap kabul oranı: 0%

değiştirildi: 26 Şub '14, 13:42


Merhaba, benim bildiğim kadarıyla SessionFactory de getSession() diye bir method yok. openSession() diye bir method var ve o da ayarları yapılan ConnectionFactory bağlı olarak bir session açarak geri verir.

Ayrıca currentSession() diye bir method var ve o da CurrentSessionContext e bağlı olarak aktif session ı verir.

Belki aşağıdaki gibi bir kod yardımıyla session larını kontrol edebilirsin.

public class HibernateUtil {
  private static final SessionFactory sessionFactory;
  private static final ThreadLocal<Session> session = new ThreadLocal<Session>();

  static {
    try {
        // Create the SessionFactory
        sessionFactory = new Configuration().configure().buildSessionFactory();
    } catch (HibernateException ex) {
        throw new RuntimeException("Hibernate Configuration problem");
    }
  }

  public static Session currentSession() throws HibernateException {
    Session s = (Session) session.get();
    // Open a new Session, if this Thread has none yet
    if (s == null) {
        s = sessionFactory.openSession();
        session.set(s);
    }
    return s;
  }
permanent link

cevaplandı: 26 Şub '14, 11:42

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Aslında benim amacım bir DAO katmanı oluşturup, entity nesnelerini dışarı açmak. Bunun için hangi yöntemi kullanmalıyım. openSession her seferinde yeni bir sesion nesnesi oluşturuyor. Bu sebeple performans açısından iyi bir yöntem olduğunu düşünmüyoru. Ancak her vt işleminde session kullanmaz isem bu seferde metodlara session nesnesini parametre olarak vermem gerekir diye düşünüyorum.

(26 Şub '14, 14:31) querman querman's gravatar image
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
×109
×10
×1

Soruldu: 26 Şub '14, 11:18

Görüntüleme: 609 kez

Son güncelleme: 26 Şub '14, 14:32

powered by BitNami OSQA