java web數據源


前提:項目或者Tomcat有相應數據庫的驅動程序
數據源的提出:
JDBC的操作中打開數據庫連接,操作數據庫,關閉數據庫,每次操作只有操作可能不同,
每次都打開連接和關閉數據庫,會有資源浪費的現象
數據源可以減少數據庫的打開和關閉數據庫的次數
原理:
    1.Connection Pool管理數據庫連接    
    2.通過DataSource管理Connection Pool
    3.DataSource被JNDI Tree綁定
操作流程:
用戶通過lookup在JNDI Tree上通過名稱查找,找到DataSource,再由DataSource在Connection Pool中取得一個數據庫連接
配置文件”TOMCAT_HOME/conf/context.xml“中在<Context>標籤中添加<Recource>標籤:
<Resource name="數據源的名字" type="javax.sql.DataSource">
各個參數的意義
maxActive---最大連接數
maxIdle---最大維持數(沒有用戶連接的時候,保持多少個連接)
maxWait---連接滿的時候,用戶等待的時間
username--用戶名
password--密碼
driverClassName--驅動程序(前提:項目或者Tomcat有相應數據庫的驅動程序)
url--連接地址
eg.
<Context>
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
     maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/cilen"/>
 </Context>


使用數據源操作數據庫的步驟
    注:導包(java.sql.*---->具體的sql操作使用到這個包
            javax.sql.*---->配置文件中的<Resource type="javax.sql.DataSource"屬於這個包
            javax.naming.*---->在使用Context就是這個包中的,即使用lookup的時候使用的名稱查找使用到這個包)
        NAME---在配置文件中<Recource name="">的name的值
        //注意:使用tomcat的時候需要對NAME進行定位.需要NAME="java:comp/env/配置文件中的name值"其他服務器不需要這樣的操作
        
    1.在JNDI Tree上查找數據源
        Context context = new InitialContext();//初始化查找命名空間
        DataSource ds = (DataSource)context.lookup((NAME);//lookup()返回的是Object需要強轉
    2.獲得連接:
        Connection conn = ds.getConnection();
    3.業務操作
    4.conn.close()---不再是JDBC中的關閉連接,這裏是表示將連接放回連接池,實際就是將這個鏈接標記爲可用
附:官方API中這麼說DataSource:
     作爲 DriverManager 工具的替代項,DataSource 對象是獲取連接的首選方法
     實現 DataSource 接口的對象通常在基於 JavaTM Naming and Directory Interface (JNDI) API 的命名服務中註冊。         

   

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