Not : Eğer "Using Hibernate built-in connection pool (not for
production use!)" şeklinde bir mesaj alırsak sebebi Hibernate ile gelen DriverManagerConnectionProvider sınıfının veritabanı connection pool olarak kullanılmasıdır. Tavsiye edilen buradaki örnekteki gibi C3P0ConnectionProvider sınıfının kullanılmasıdır.
Hibernate ve Connection Pool
Hibernate ile bir çok connection pool kütüphanesi kullanmak mümkün. Bunlar arasında C3P0, Proxool, DBCP sayılabilir. Hibernate ile bu kütüphanelerin hangi arayüz ile birleştirildiğini aşağıdaki şekilde görmek mümkün.
Connection Pooling başlıklı yazıda tüm kütüphanelerin konfigürasyon parametreleri ile ilgili bilgi mevcut. Ayrıca Hibernate: Providing Connections for Hibernate başlıklı yazıya göz atmak faydalı olabilir.
C3P0
C3P0ConnectionProvider bir connection pool sağlayıcısıdır. En önemli özelliklerinden birisi de How to check if connection alive? sorusunda da açıklandığı gibi pasif bekleyen veritabanı bağlantılarını aşağıdaki SQL benzeri bir cümle ile arada bir kontrol etmesidir.
Bu sınıfı kullanmak için aşağıdaki kütüphaneyi projeye eklemek yeterli.
Dikkat edilmesi gereken nokta burada açıklandığı gibi hibernate ayarları için kullanılan konfigürasyon anahtar değerler ile C3P0 ile kullanılan konfigürasyon anahtar değerler farklı.
Aşağıdaki C3P0 içindeki ComboPooledDataSource sınıfını kullanma örneği var.
Apache'nin kütüphanesi. Burada kod içinden kullanma örneği mevcut. Önemli sınıfları şunlar
org.apache.commons.pool.impl.GenericObjectPool
Connection nesnelerini saklayan sınıf
GenericObjectPool connectionPool = new GenericObjectPool();
connectionPool.setMaxActive(10);
GenericObjectPool sınıfının addObject() metodu çağırılarak pool'u önceden doldurmak mümkün.
org.apache.commons.dbcp.DriverManagerConnectionFactory
Gerektikçe yeni bir connection nesnesi açan factory.
org.apache.commons.dbcp.PoolableConnectionFactory
DriverManagerConnectionFactory ve GenericObjectPool nesnelerini birleştirir.
org.apache.commons.dbcp.PoolingDataSource
Bilindik DataSource arayüzünü gerçekleştiren sınıf.
Hibernate ve Connection Pool
Hibernate ile bir çok connection pool kütüphanesi kullanmak mümkün. Bunlar arasında C3P0, Proxool, DBCP sayılabilir. Hibernate ile bu kütüphanelerin hangi arayüz ile birleştirildiğini aşağıdaki şekilde görmek mümkün.
Connection Pooling başlıklı yazıda tüm kütüphanelerin konfigürasyon parametreleri ile ilgili bilgi mevcut. Ayrıca Hibernate: Providing Connections for Hibernate başlıklı yazıya göz atmak faydalı olabilir.
C3P0
C3P0ConnectionProvider bir connection pool sağlayıcısıdır. En önemli özelliklerinden birisi de How to check if connection alive? sorusunda da açıklandığı gibi pasif bekleyen veritabanı bağlantılarını aşağıdaki SQL benzeri bir cümle ile arada bir kontrol etmesidir.
Bu sınıfı kullanmak için aşağıdaki kütüphaneyi projeye eklemek yeterli.
Dikkat edilmesi gereken nokta burada açıklandığı gibi hibernate ayarları için kullanılan konfigürasyon anahtar değerler ile C3P0 ile kullanılan konfigürasyon anahtar değerler farklı.
Aşağıdaki C3P0 içindeki ComboPooledDataSource sınıfını kullanma örneği var.
protected Connection getConnection() throws NamingException, SQLException {DBCP
ComboPooledDataSource cpds = new ComboPooledDataSource();
try {
cpds.setDriverClass( "net.sourceforge.jtds.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:jtds:sqlserver://10.38.28.77/MyDB" );
cpds.setUser("sa");
cpds.setPassword("password");
cpds.setMaxStatements( 180 );
} catch (PropertyVetoException e) {
e.printStackTrace();
}
return cpds.getConnection();
}
Apache'nin kütüphanesi. Burada kod içinden kullanma örneği mevcut. Önemli sınıfları şunlar
org.apache.commons.pool.impl.GenericObjectPool
Connection nesnelerini saklayan sınıf
GenericObjectPool connectionPool = new GenericObjectPool();
connectionPool.setMaxActive(10);
GenericObjectPool sınıfının addObject() metodu çağırılarak pool'u önceden doldurmak mümkün.
org.apache.commons.dbcp.DriverManagerConnectionFactory
Gerektikçe yeni bir connection nesnesi açan factory.
org.apache.commons.dbcp.PoolableConnectionFactory
DriverManagerConnectionFactory ve GenericObjectPool nesnelerini birleştirir.
org.apache.commons.dbcp.PoolingDataSource
Bilindik DataSource arayüzünü gerçekleştiren sınıf.
Hiç yorum yok:
Yorum Gönder