一、Spring和Jdbc的结合
Spring获取DateSource
-
通过数据源DataSource连接数据库对象Connection:现在Spring通过配置文件获取数据源DataSource,帮助我们管理Connection对象
- Spring通过创建数据库连接帮助我们管理Connection对象
- 数据库连接处负责分配,管理和释放数据库连接,允许应用程序重复使用现有的数据库连接而不是重新建立一个
Spring获取DataSource的方式
-
Spring获取DataSource有四种方式获取:将数据源DataSource注入到Bean容器中,通过数据源去获取连接池中连接
-
基于JDK规范提供的DataSource数据源:
<!-- 基于jdk规范数据源(ORACLE提供) --> <!-- oracle提供而的jdbc数据连接池 --> <bean name="dataSource1" class="oracle.jdbc.pool.OracleConnectionPoolDataSource"> <!-- 网络协议TCP:三层握手 --> <property name="networkProtocol"> <value>tcp</value> </property> <property name="databaseName"> <value>XE</value> </property> <!-- 数据库连接方式thin和oci --> <property name="driverType"> <value>thin</value> </property> <property name="portNumber"> <value>1521</value> </property> <property name="user"> <value>briup</value> </property> <!-- URL --> <property name="serverName"> <value>127.0.0.1</value> </property> <property name="password"> <value>briup</value> </property> </bean>
-
dbcp: DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。
- 单独使用 dbcp 需要2个包:commons-dbcp.jar,commons-pool.jar
<!-- 配置properties文件,读取数据库连接四要素 --> <!-- 读取这个资源文件 读完之后下面就可以用${key}来去文件中的value值了 --> <!-- 这种方式是我们第一节学习的那种配置方式方式的简写 --> <!-- classpath:src目录下面的 --> <context:property-placeholder location="classpath:oracle.properties" /> 或者 <!-- 交个Spring解析oracle.properties的配置文件,获得locations --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="classpath:oracle.properties" /> </bean> <!-- dbcp数据源 --> <bean name="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>${driver}</value> </property> <property name="url"> <value>${url}</value> </property> <property name="username"> <value>${user}</value> </property> <property name="password"> <value>${password}</value> </property> <!-- 连接池中连接的最大连接数 --> <property name="maxActive"> <value>80</value> </property> <!-- 连接池中连接的最大空闲连接数 --> <property name="maxIdle"> <value>20</value> </property> <!-- 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间 单位:毫秒 --> <!-- 超过时间则抛出异常,如果设置为-1表示无限等待 --> <property name="maxWait"> <value>3000</value> </property> </bean
-