C3P0'ı en iyi şekilde uygulamak için bu cevabı kontrol edin
C3P0 :
Kurumsal uygulama için C3P0 en iyi yaklaşımdır. C3P0, jdbc3 spec ve jdbc2 std uzantısı tarafından açıklandığı gibi Bağlantı ve Bildirim Havuzlaması uygulayan DataSources dahil JNDI ile yüklenebilir DataSources ile geleneksel (DriverManager tabanlı) JDBC sürücülerini artırmak için kullanımı kolay bir kütüphanedir. C3P0 ayrıca, DB bağlantılarını ve özgeçmişte şeffaf yeniden bağlantılarını sağlam bir şekilde ele alırken, DBCP bağlantı altından çıkarıldıysa bağlantıları asla kurtarmadı.
Bu yüzden c3p0 ve diğer bağlantı havuzları da deyim önbellekleri hazırlamıştır - uygulama kodunun tüm bunlarla uğraşmaktan kaçınmasına izin verir. İfadeler genellikle bazı sınırlı LRU havuzunda tutulur, bu nedenle ortak ifadeler PreparedStatement örneğini yeniden kullanır.
Daha da kötüsü, DBCP, temel aktarımın bozulduğu uygulamaya Bağlantı nesnelerini döndürüyordu. C3p0 için yaygın bir kullanım durumu, Apache Tomcat'te bulunan standart DBCP bağlantı havuzunun yerini almaktır. Çoğu zaman, bir programcı DBCP bağlantı havuzunda bağlantıların doğru bir şekilde geri dönüştürülmediği bir durumda çalışır ve bu durumda c3p0 değerli bir alternatiftir.
Mevcut güncellemelerde C3P0'ın bazı mükemmel özellikleri var. bunlar feryat verilir:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxIdleTime();
dataSource.setMaxStatements();
dataSource.setMaxStatementsPerConnection();
dataSource.setMaxIdleTimeExcessConnections();
Burada, max ve min havuz boyutu bağlantı sınırlarını tanımlar, bu da bu uygulamanın ne kadar minimum ve maksimum bağlantı alacağı anlamına gelir. MaxIdleTime()
boşta bağlantıyı ne zaman serbest bırakacağını tanımlar.
DBCP :
Bu yaklaşım da iyidir ancak bağlantı zaman aşımı ve bağlantı gerçekleştirme gibi bazı dezavantajları vardır. C3P0 mutithreading projeleri kullanırken iyidir. Projelerimizde DBCP kullanarak aynı anda birden çok iş parçacığı yürütmesi kullandık, daha fazla iş parçacığı yürütmesi kullandıysak bağlantı zaman aşımı elde ettik. Bu yüzden c3p0 yapılandırması ile gittik. Ben DBCP hiç tavsiye etmem, özellikle DB giderken havuzdan bağlantıları atma, bu DB geri geldiğinde yeniden bağlanma yetersizliği ve dinamik olarak havuza geri bağlantı nesneleri eklemek için yetersizlik (sonsuza kadar asılı) JDBCconnect I / O soketinin okunması)
Teşekkürler :)