zoukankan      html  css  js  c++  java
  • Spring配置常识

    (1)数据源配置

    <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>

    配置参数的解释:

    配置参数 参数含义
    <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.DruidDataSource

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

    使用的JDBC驱动的完整有效的java 类名
    连接数据库要加载驱动,oracle.jdbc.driver.OracleDriver 可以认为是驱动类的名字,前面oracle.jdbc.driver是包名,类名是OracleDriver

    <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)

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

    JdbcTemplate主要提供下列方法:

      1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

      2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

      3、query方法及queryForXXX方法:用于执行查询相关语句;

      4、call方法:用于执行存储过程、函数相关语句。

  • 相关阅读:
    SHUOJ 1858 分裂的寄生兽
    POJ3057 Evacuation 解题报告
    POJ1149 PIGS 解题报告
    android与javaee通信:登录界面超级简化版
    如何实现服务器与mysql的远程通信?
    关于安卓和服务器通信的一点注意事项
    android中SQLite的基本操作
    jude的一些基本用法
    小项目难点分析
    小项目设想
  • 原文地址:https://www.cnblogs.com/xuegu/p/7018826.html
Copyright © 2011-2022 走看看