dbcp、c3p0、jndi三者的聯絡
阿新 • • 發佈:2019-02-03
是兩個資料庫連線池
這兩個連線池都是Hibernate建議使用的連線池
DBCP是一個依賴Jakartacommons-pool物件池機制的資料庫連線池,Tomcat的資料來源使用的就是DBCP。
C3P0是一個開放原始碼的JDBC連線池,它在lib目錄中與Hibernate一起釋出,包括了實現jdbc3和jdbc2擴充套件規範說明的Connection和Statement 池的DataSources 物件。
JNDI(Java Naming and DirectoryInterface)是SUN公司提供的一種標準的Java命名系統介面,JNDI提供統一的客戶端API,通過不同的訪問提供者介面JNDISPI的實現,由管理者將JNDIAPI對映為特定的命名服務和目錄系統,使得Java應用程式可以和這些命名服務和目錄服務之間進行互動。
JNDI與JDBC:
JNDI提供了一種統一的方式,可以用在網路上查詢和訪問服務。通過指定一個資源名稱,該名稱對應於資料庫或命名服務中的一個紀錄,同時返回資料庫連線建立所必須的資訊。
參考資料:
http://java.sun.com/products/jndi/examples.html
http://java.sun.com/products/jndi/serviceproviders.html
常用的JNDI操作:
void bind(String sName,Object object);――繫結:把名稱同對象關聯的過程
void rebind(String sName,Objectobject);――重新繫結:用來把物件同一個已經存在的名稱重新繫結
void unbind(String sName);――釋放:用來把物件從目錄中釋放出來
void lookup(String sName,Object object);――查詢:返回目錄總的一個物件
void rename(String sOldName,StringsNewName);――重新命名:用來修改物件名稱繫結的名稱
NamingEnumeration listBinding(StringsName);――清單:返回繫結在特定上下文中物件的清單列表
NamingEnumeration list(String sName);
程式碼示例:重新得到了名稱、類名和繫結物件。
NamingEnumeration namEnumList =ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}
這兩個連線池都是Hibernate建議使用的連線池
DBCP是一個依賴Jakartacommons-pool物件池機制的資料庫連線池,Tomcat的資料來源使用的就是DBCP。
C3P0是一個開放原始碼的JDBC連線池,它在lib目錄中與Hibernate一起釋出,包括了實現jdbc3和jdbc2擴充套件規範說明的Connection和Statement 池的DataSources 物件。
JNDI(Java Naming and DirectoryInterface)是SUN公司提供的一種標準的Java命名系統介面,JNDI提供統一的客戶端API,通過不同的訪問提供者介面JNDISPI的實現,由管理者將JNDIAPI對映為特定的命名服務和目錄系統,使得Java應用程式可以和這些命名服務和目錄服務之間進行互動。
JNDI與JDBC:
JNDI提供了一種統一的方式,可以用在網路上查詢和訪問服務。通過指定一個資源名稱,該名稱對應於資料庫或命名服務中的一個紀錄,同時返回資料庫連線建立所必須的資訊。
參考資料:
http://java.sun.com/products/jndi/examples.html
http://java.sun.com/products/jndi/serviceproviders.html
常用的JNDI操作:
void bind(String sName,Object object);――繫結:把名稱同對象關聯的過程
void rebind(String sName,Objectobject);――重新繫結:用來把物件同一個已經存在的名稱重新繫結
void unbind(String sName);――釋放:用來把物件從目錄中釋放出來
void lookup(String sName,Object object);――查詢:返回目錄總的一個物件
void rename(String sOldName,StringsNewName);――重新命名:用來修改物件名稱繫結的名稱
NamingEnumeration listBinding(StringsName);――清單:返回繫結在特定上下文中物件的清單列表
NamingEnumeration list(String sName);
程式碼示例:重新得到了名稱、類名和繫結物件。
NamingEnumeration namEnumList =ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}