Merhaba arkadaşlar

Elimde bir jsf projem var. Transaction işlemi yaparken mimaride takıldım.

Linkte Kullandığım ConnectionPool sınıfım var

ConnectionPool.java

Dao sınıflarım da bulunan örnek bir database işlemim. Daolarda connectionu yaratırken linkte görüldüğü gibi ConnectionPool sınıfından instance alıyorum.

Dao Sınıfım

örnek bir transection yapmak bean metodu

Örnek Bean

Kafamdaki transaction planı

Transaction Bean

Bu durumda beanda oluşturduğum connection nesnesini aşağıda gezdireceğim ve parametre olarak yolladığım connection nesnesi üzerinden bağlanacak. Eğer connection parametresi yollamaz isem kendisi instance alacak.

Bu durumun daha basit bir hali yokmu. Projeyi Hibernate,MyBatis gibi ortamlara taşıma imkanım yok.

soruldu: 07 Kas '14, 08:55

Hasan%20Bey's gravatar image

Hasan Bey
342202532
cevap kabul oranı: 0%

değiştirildi: 07 Kas '14, 08:56


ThreadLocal kullanabilirsin:

public class ConnectionPool {

    ThreadLocal<Connection> local = new ThreadLocal<Connection>();

    public Connection getConnection() {
        if (local.get() == null) {
            final Connection con = new Connection();
            local.set(con);
        }
        return local.get();
    }
}
public class Dao {

    public void doSomething() {
        final Connection con = new ConnectionPool().getConnection();

    }
}

Dao siniflari new ConnectionPool().getConnection() ile ThreadLocal icindeki, threade has connection nesnesini alirlar. Bu sekilde her thread icinde baska bir connection nesnesi olusturulur ve local.get() ile bu connection nesnesine erismek mümkün olur.

permanent link

cevaplandı: 08 Kas '14, 00:28

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

değiştirildi: 08 Kas '14, 00:31

Hocam bunu bean sınıflarına nasıl kullanacağım? Yani iki dao arasında aynı Connection kullanılmasını nasıl sağlayacağım?

(08 Kas '14, 05:04) Hasan Bey Hasan%20Bey's gravatar image

Örnekte görüldügü gibi kullanacaksin. ConnectionPool icinde bir ThreadLocal nesnesi olusturup, onun icine bir getConnection() metodunda bir Connection nesnesi yerlestiriyorsun. Ayni thread icinde her Dao getConnection üzerinden ayni Connection nesnesine erisir, bu sekilde Dao siniflarina Connection nesnesini parametre olarak vermen gerekmiyor.

(09 Kas '14, 04:57) özcanacar ♦♦ %C3%B6zcanacar'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:

×7
×1

Soruldu: 07 Kas '14, 08:55

Görüntüleme: 525 kez

Son güncelleme: 09 Kas '14, 04:58

powered by BitNami OSQA