Spring配置常識

(1)數據源配置java

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
    <property name="url" value="jdbc:oracle:thin:@192.168.0.153:1521:OANET"></property>
    <property name="username"><value>gd_base</value></property>
    <property name="password"><value>11</value></property>
    <property name="maxActive"><value>80</value></property>
    <property name="minIdle"><value>5</value></property>
    <property name="initialSize"><value>10</value></property>
    <property name="maxWait"><value>60000</value></property>
    <property name="poolPreparedStatements"><value>true</value></property>
    <property name="maxOpenPreparedStatements"><value>20</value></property>
    <property name="validationQuery"><value>select 1 from dual</value></property>
    <property name="testWhileIdle"><value>true</value></property>
    <property name="testOnBorrow"><value>false</value></property>
    <property name="testOnReturn"><value>false</value></property>
    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
    <property name="minEvictableIdleTimeMillis"><value>300000</value></property>
    <property name="filters"><value>stat,wall</value></property>
     <!-- 打開 removeAbandoned 功能 -->  
    <property name = "removeAbandoned" value = "true" />  
    <!-- 1800 秒,也就是 30 分鐘 -->  
    <property name = "removeAbandonedTimeout" value ="1800" />  
    <!-- 關閉 abanded 鏈接時輸出錯誤日誌 -->     
    <property name = "logAbandoned" value = "true" /> 
</bean>

配置參數的解釋:mysql

配置參數 參數含義
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">

destroy-method="close"的做用是當數據庫鏈接不使用的時候,就把該鏈接從新放到數據池中,方便下次使用調用.(數據庫鏈接關閉)
class="com.alibaba.druid.pool.DruidDataSource"
DRUID鏈接池,DRUID是阿里巴巴開源平臺上一個數據庫鏈接池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優勢,同時加入了日誌監控,
能夠很好的監控DB池鏈接和SQL的執行狀況,能夠說是針對監控而生的DB鏈接池.和其它鏈接池同樣DRUID的DataSource類爲:com.alibaba.druid.pool.DruidDataSourcespring

<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>

使用的JDBC驅動的完整有效的java 類名
鏈接數據庫要加載驅動,oracle.jdbc.driver.OracleDriver 能夠認爲是驅動類的名字,前面oracle.jdbc.driver是包名,類名是OracleDriversql

<property name="url" value="jdbc:oracle:thin:@192.168.0.153:1521:OANET"></property>

傳遞給JDBC驅動的用於創建鏈接的URL
jdbc:oracle:thin:@192.168.0.153:1521:OANET
jdbc:表示採用jdbc方式鏈接數據庫
oracle:表示鏈接的是oracle數據庫
thin:表示鏈接時採用thin模式(oracle中有兩種模式,分別是oci和thin)
jdbc:oralce:thin:是一個jni方式的命名
@192.168.0.153表示地址
1521和orcl表示端口和數據庫名數據庫

oracle的jdbc鏈接方式:oci和thin
oci和thin是Oracle提供的兩套Java訪問Oracle數據庫方式。
thin是一種瘦客戶端的鏈接方式,即採用這種鏈接方式不須要安裝oracle客戶端,只要求classpath中包含jdbc驅動的jar包就行。thin就是純粹用Java寫的ORACLE數據庫訪問接口。
oci是一種胖客戶端的鏈接方式,即採用這種鏈接方式須要安裝oracle客戶端。oci是Oracle Call Interface的首字母縮寫,是ORACLE公司提供了訪問接口,就是使用Java來調用本機的Oracle客戶端,而後再訪問數據庫,優勢是速度快,可是須要安裝和配置數據庫。緩存

<property name="username"><value>gd_base</value></property> 傳遞給JDBC驅動的用於創建鏈接的用戶名
<property name="password"><value>11</value></property> 傳遞給JDBC驅動的用於創建鏈接的密碼
<property name="maxActive"><value>80</value></property> 最大鏈接數量
<property name="minIdle"><value>5</value></property> 最小空閒鏈接數量
<property name="initialSize"><value>10</value></property> 初始化鏈接數量
<property name="maxWait"><value>60000</value></property> 超時等待時間以毫秒爲單位
<property name="poolPreparedStatements"><value>true</value></property> 是否緩存preparedStatement,也就是PSCache。PSCache對支持遊標的數據庫性能提高巨大,好比說oracle。在mysql下建議關閉。
<property name="maxOpenPreparedStatements"><value>20</value></property> statement池可以同時分配的打開的statements的最大數量, 若是設置爲0表示不限制
<property name="validationQuery"><value>select 1 from dual</value></property>

用來檢測鏈接是否有效的sql,要求是一個查詢語句。若是validationQuery爲null,testOnBorrow、testOnReturn、testWhileIdle都不會其做用。
若是是MySql的話就用<property name="validationQuery"><value>select *</value></property>安全

<property name="testWhileIdle"><value>true</value></property> 建議配置爲true,不影響性能,而且保證安全性。申請鏈接的時候檢測,若是空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測鏈接是否有效。
<property name="testOnBorrow"><value>false</value></property> 申請鏈接時執行validationQuery檢測鏈接是否有效,作了這個配置會下降性能。
<property name="testOnReturn"><value>false</value></property> 歸還鏈接時執行validationQuery檢測鏈接是否有效,作了這個配置會下降性能
<property name="timeBetweenEvictionRunsMillis"><value>60000</value></property> 在空閒鏈接回收器線程運行期間休眠的時間值,以毫秒爲單位
<property name="minEvictableIdleTimeMillis"><value>300000</value></property> 鏈接在池中保持空閒而不被空閒鏈接回收器線程
<property name="filters"><value>stat,wall</value></property> 屬性類型是字符串,經過別名的方式配置擴展插件,經常使用的插件有:監控統計用的filter:stat 日誌用的filter:log4j 防護sql注入的filter:wall
<property name = "removeAbandoned" value = "true" />  removeAbandoned: 是否自動回收超時鏈接
<property name = "removeAbandonedTimeout" value ="1800" /> removeAbandonedTimeout: 超時時間(以秒數爲單位)
<property name = "logAbandoned" value = "true" />  鏈接被泄露時是否打印 

 

(2)Spring爲咱們提供了SqlMapClientDaoSupportExtend支持類,全部DAO繼承這個類,就會自動得到JdbcTemplate(前提是注入dataSource)oracle

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
</bean>

JdbcTemplate主要提供下列方法:函數

  一、execute方法:能夠用於執行任何SQL語句,通常用於執行DDL語句;性能

  二、update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;

  三、query方法及queryForXXX方法:用於執行查詢相關語句;

  四、call方法:用於執行存儲過程、函數相關語句。

相關文章
相關標籤/搜索