- 數據源概念
- 數據庫連接池
- jndi概念
- 數據源與連接池關系
- 數據源與jndi關系
- jdbc基礎
1.什么是數據源?
答: 數據源定義的是連接到實際數據庫的一條路徑而已,數據源中并無真正的數據,它僅僅記錄的是你連接到哪個數據庫,以及如何連接的,如odbc數據源。也就是 說數據源僅僅是數據庫的連接名稱,一個數據庫可以有多個數據源連 接。
在Java語言中,DataSource對象就是一個代表數據源實體的對象。一個數據源就是一個用來存儲數據的工具,它可以是復雜的大型企業級數據庫,也可以是簡單得只有行和列的文件。數據源可以位于在服務器端,也可以位于客服端。
2.什么是數據庫連接池?
答: 數據庫連接是負責分配、管理和釋放數據庫連接。使用數據庫連接池是因為數據庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤 為突出。如weblogic、tomcat、WebSphere容器都實現了數據庫連接池,但是數據庫連接池是可以獨立出來自己編碼實現的。
數據庫連接池在系統啟動時初始化了一定量maxIdle=idlenum的數據庫連接,即沒有他的使用中的鏈接被釋放的情況下,連接池中保存的最大空閑鏈 接數。數據庫連接請求如果沒有超過idle的值則直接去連接池中獲取;如果超過了maxIdle的值則新建一個數據庫連接;但如果數據庫連接池中的連接總 數超過了maxActive=activenum則 (如下處理);
1 直接拋錯
2 讓想要借出連接的線程等待一段時間,如果等不到,再拋錯
3 每隔一段檢查一次pool,直到有可用連接,否則一直等下去
4 永遠可以拿到(視情況需要maxActive不設置或0或負)
但當沒有可以使用的數據庫鏈接的時候,連接池將要等待一個鏈接被返回的最長時間(毫秒)maxWait=waitnum,超過這個時間就要拋出異常。
3.什么是jndi?
答:jndi全稱是java naming and directory interface。簡單點就是你按命名規則給一個東西命名然后你就可以通過該名字在特定環境下直接查找到該東西了。
JNDI 是用于向Java程序提供目錄和命名功能的API??梢院唵蔚匕袹NDI理解為一種將對象和名字綁定的技術,對象工廠負責生產出對象,這些對象都和惟一的 名字綁定。外部程序可以通過名字來獲取對某個對象的引用。在一個文件系統中,文件名被綁定給文件。在DNS中,一個IP地址綁定一個URL。在目錄服務 中,一個對象名被綁定給一個對象實體。
在Intranets(企業內部網)和Internates(互聯網)中 目錄服務(Directory service)都非常重要,它規范了命名規則,讓人們容易理解實體及之間的關系。JNDI是Java平臺的一個標準擴展,提供了一組接口、類和關于命名 空間的概念。JNDI目前所支持的技術包括LDAP、CORBA Common Object Service(COS)名字服務、RMI、NDS、DNS、Windows注冊表等等。
jndi被設計成獨立于特定的目錄服務,所以各種各樣的目錄都可以通過相同的方式進行訪問。這樣使用jndi的java程序員不僅可以獲得統一規整的命名和目錄,而且可以通過多層的命名方案無縫訪問(seamless acess)目錄對象。
4.數據源與數據庫連接池關系?
答: 我們通過第三方工具來使用數據源來實現對數據庫數據操作。一個數據庫連接池可以給它創建多個數據源,如一個人有別名;如果單純使用jdbc連接數據庫是 web容器你要什么就去連什么。這樣做沒人看不耗內存,量大了你就死機??梢赃@樣理解,數據源表示一個與數據庫的連接(傳統)或者表示很多與數據庫的連接 (使用數據庫連接池)。數據源是用于訪問連接池或多池的JNDI對象,多池的主要目的是提高可用性和在一組連接池間實現負載均衡。
5.數據源與jndi關系?
答:數據源是在JDBC 2.0中引入的一個概念。 在JDBC 2.0擴展包中定義了javax.sql.DataSource接口來描述這個概念。如果用戶希望建立一個數據庫連接,通過查詢在JNDI服務中的數據 源,可以從數據源中獲取相應的數據庫連接。這樣用戶就只需要提供一個邏輯名稱(Logic Name),而不是數據庫登錄的具體細節。即DataSource采用Java的JNDI技術,來獲得DataSource對象的引用。當然各種web容 器把DataSource作為一種可以配置的JNDI資源來處理如tomcat。生成DataSource對象的工廠為 org.apache.commons.dbcp.BasicDataSourceFactory。
6.jdbc基礎
答:java database connectivity standard 是一套規范的面向應用程序的接口,通過它可以訪問各類關系數據庫。各個數據庫會實現該接口作為驅動如jtds.jar,當然可以自己寫實現。
jdbc 是低級api,提供訪問數據庫的接口,是構建高級api的基礎,利用純java編寫可以在任何操作系統任何java環境下工作。JDBC API 中定義了一些Java類分別用來表示與數據庫的連接(connections), SQL語句(SQL statements), 結果集(result sets)以及其它的數據庫對象, 使得Java程序能方便地與數據庫交互并處理所得的結果。
使用JDBC, 所有Java程序(包括Java applications , applets和servlet)都能通過SQL語句或存儲在數據庫中的過程(stored procedures)來存取數據庫。要通過JDBC來存取某一特定的數據庫,必須有相應的JDBC driver,它往往是由生產數據庫的廠家提供,是連接JDBC API與具體數據庫之間的橋梁。JDBC driver 是用于特定數據庫的一套實施了JDBC接口的類集。
簡單的說,jdbc可以做三件事:與數據庫建立連接,發送sql語句,處理結果。jdbc可以理解為odbc的純java語言和面向對象的實現。
7.數據庫訪問方法?
答:在ASP中可以通過三種方式訪問數據庫:
1、IDC(Internet Database Connector)方式;
2、ADO(ActiveX Data Objects)方式;
3、RDS(Remote Data Service)方式。
在jsp中訪問數據庫常用:
1、JDBC-ODBC橋接器;
2、特定數據庫的jdbc驅動直接連接數據庫;
3、經過池化維護一定量的連接數目,用jndi去訪問數據源對應池獲取連接;
參考:http://www.diybl.com/course/7_databases/database_other/2008126/97740.html