對JNDI數據源的理解

一:JNDI數據源的作用

1:在沒有使用JNDI數據源時,程序員開發訪問MySQL數據庫的應用,需要將一個對 MySQL JDBC 驅動程序類的引用進行硬編碼,並通過使用適當的 JDBC URL 連接到數據庫;這樣一來會出現以下問題:

(1)數據庫服務器名稱、用戶名和口令都可能需要改變,由此引發JDBC URL需要修改;
(2)數據庫可能改用別的產品,如改用DB2或者Oracle,引發JDBC驅動程序包和類名需要修改;
(3)隨着實際使用終端的增加,原配置的連接池參數可能需要調整;                                                                                                 ……

2:使用了JNDI數據源後,把以上這些問題交給J2EE容器來配置和管理,程序員只需要在應用程序中對這些配置和管理進行引用即可。也就是在J2EE容器中配置JNDI參數(也就是JDBC引用參數),定義一個JNDI數據源;再給這個JNDI數據源設置一個名稱;然後在程序中,通過數據源名稱引用JNDI數據源從而訪問後臺數據庫。

二:對JNDI數據源的理解(依照下圖進行描述)

                                              

1:在J2EE容器內配置JNDI數據源(J2EE 規範要求所有 J2EE 容器都要提供 JNDI 規範的實現),將要鏈接的數據庫的相關信息配置到JNDI中即可配置成JNDI數據源;也就是由應用服務器來管理數據源;

2:應用程序不再關心訪問哪個數據庫,以及數據庫的具體配置信息;

3:當應用程序要訪問數據庫時,需要從JNDI中查找數據源,然後再執行數據訪問操作;即JNDI充當了數據庫和應用程序之間的交換機;

4:具體在JNDI中如何配置數據源,請看這篇文章,待定

三:與不使用JNDI數據源時的示意圖對比

1:下圖是不使用JNDI數據源時的數據源配置情況;

2:需要在應用程序內部配置數據庫連接參數,即數據源;

3:配置的數據源可以是數據源連接池,也可以是非池數據源;但是在生產環境下,建議使用數據源連接池;

4:配置數據源連接池時,可以使用DBCP、C3P0等;配置非池數據源時,可以使用spring自帶的數據源;

                                                

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章