Yanıtlar:
Veritabanı bağlantı havuzu, veritabanı bağlantılarını açık tutmak ve böylece başkaları tarafından yeniden kullanılmalarını sağlamak için kullanılan bir yöntemdir.
Tipik olarak, bir veritabanı bağlantısını açmak, özellikle veritabanı uzaktaysa pahalı bir işlemdir. Ağ oturumlarını açmalı, kimlik doğrulamalı, yetkilendirmeyi kontrol ettirmeli vb. Havuzlama, bağlantıları aktif tutar, böylece daha sonra bir bağlantı istendiğinde, başka bir bağlantı oluşturmak yerine aktif olanlardan biri kullanılır.
Sonraki birkaç paragraf için aşağıdaki şemaya bakın:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
En basit şekliyle, "gerçek" olana benzer bir açık bağlantı API çağrısına benzer bir API çağrısı (1). Bu, önce havuzu uygun bir bağlantı için kontrol eder (2) ve eğer varsa, bu müşteriye verilir. Aksi takdirde yeni bir tane oluşturulur (3).
Bir "Uygun bağlantı" sadece zaten biridir vardır (örneğin veritabanı örneği, kimlik bilgileri ve muhtemelen başka şeyler gibi) doğru bilgileri kullanarak veritabanına erişimi.
Benzer şekilde, gerçekte gerçek yakın bağlantıyı çağırmayan bir yakın API çağrısı (4) vardır, bunun yerine bağlantıyı daha sonra kullanmak üzere havuza (5) koyar. Bir noktada, havuzdaki bağlantılar gerçekten kapatılabilir (6).
Bu oldukça basit bir açıklama. Gerçek uygulamalar, birden çok sunucuya ve birden çok kullanıcı hesabına bağlantıları idare edebilir, bağlantıların bazı temellerini önceden tahsis edebilirler, böylece bazıları hemen hazır olur ve kullanım modeli sakinleştiğinde aslında eski bağlantıları kapatabilirler.
Görüntüler bin kelimeden bahsediyor (paxdiablo harika bir açıklama yaptı):
Apache commons kitaplığını bağlantı havuzu uygulamasını şeffaf bir şekilde kullanmak için kullanabilirsiniz: http://commons.apache.org/dbcp/
DBCP ayrıca desteklenen bir Hazırda Bekletme havuzudur: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
Bağlantı Havuzu oluşturma kavramı yalnızca Java'da değil, birçok programlama dilinde. Yeni bir bağlantı nesnesi oluşturmak maliyetlidir, bu nedenle yaşam döngüsünde sabit sayıda bağlantı yapılır ve korunur, bir sanal havuz oluşturulur Java Sadece ( http://javajust.com/javaques.html ) bu sayfadaki 14. soruya bakın