spring配置数据源
- 1. 什么是数据源连接池
- 2. 手动创建数据源(c3p0,druid)
- 2.1 导入数据库连接驱动,数据源pom坐标
- 2.2 创建数据源
- 2.3 配置jdbc.properties, 解耦拿到数据源
- 3. spring配置数据源
- 3.1 bean方式创建数据源1
- 3.2 bean方式创建数据源2
- 4. 测试spring数据源连接
- oracle数据库测试用
- ojdbc6, oracle11.2版本
select * from v$version
1. 什么是数据源连接池
- 数据源连接池
- 用jdbc操作数据库时,会连接数据库,会产生一个数据库连接
- 使用第三方jar包,连接数据库时,数据库连接池,会产生多个数据库连接给你使用
- 数据源连接池对连接进行管理,需要进行数据库操作时,给出空闲连接
数据源连接池
-
数据源(连接池)的作用
- 提高程序性能
- 事先实例化数据源,初始化部分连接资源
- 使用连接资源时从数据源中获取
- 使用完毕后将连接资源归还给数据源
-
常用的数据源连接池
阿里druid
springboot默认连接池 hikaricp
2. 手动创建数据源(c3p0,druid)
2.1 导入数据库连接驱动,数据源pom坐标
<dependency><groupId>com.oracle.database.jdbc</groupId><!-- 导入Oracle的数据库驱动 --><artifactId>ojdbc6</artifactId><version>11.2.0.4</version></dependency><dependency> <!-- hibernate 数据库连接池--><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency> <!-- Alibaba数据库连接池 --><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
2.2 创建数据源
- 同jdbc拿到数据库连接操作类型,需要数据库驱动,数据库地址,账号,密码
// 测试手动创建c3p0public void test1() {//ComboPooledDataSource dataSource = new ComboPooledDataSource();Connection conn = null;try {dataSource.setDriverClass("oracle.jdbc.OracleDriver");dataSource.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");dataSource.setUser("scott");dataSource.setPassword("scott");conn = dataSource.getConnection();System.out.println(conn);} catch (PropertyVetoException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (conn != null)conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}// 测试手动创建 druidpublic void test2() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName("oracle.jdbc.OracleDriver");dataSource.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");dataSource.setUsername("scott");dataSource.setPassword("scott");DruidPooledConnection conn = null;try {conn = dataSource.getConnection();System.out.println(conn);} catch (SQLException throwables) {throwables.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
2.3 配置jdbc.properties, 解耦拿到数据源
- 配置信息
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc.userName=scott
jdbc.userPassword=scott
- 读取配置文件连接数据源
// 配置文件保存jdbc的信息public void test3() {// 利用resourceBundle类解析配置文件ResourceBundle rb = ResourceBundle.getBundle("jdbc");String driver = rb.getString("jdbc.driver");String url = rb.getString("jdbc.url");String userName = rb.getString("jdbc.userName");String userPassword = rb.getString("jdbc.userPassword");// 创建durid 对象DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(userName);dataSource.setPassword(userPassword);DruidPooledConnection conn = null;try {conn = dataSource.getConnection();System.out.println(conn);} catch (SQLException throwables) {throwables.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
3. spring配置数据源
3.1 bean方式创建数据源1
- 添加pom依赖
<dependency> <!-- 导入spring坐标 --><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.10.RELEASE</version></dependency>
- 创建spring配置文件
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="oracle.jdbc.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/><property name="username" value="scott"/><property name="password" value="scott"/></bean>
- spring拿到数据源
// spring 容器产生数据源对象 druidpublic void test4() {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");DruidDataSource ds = (DruidDataSource) app.getBean("dataSource");DruidPooledConnection connection = null;try {connection = ds.getConnection();System.out.println("connection is connected..." + connection);System.out.println(ds);} catch (SQLException throwables) {throwables.printStackTrace();} finally {try {if (connection != null)connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}
3.2 bean方式创建数据源2
- 使用spring-context 读取jdbc.properties带有连接数据库地址账号密码的文件
- 引入context命名空间和约束路径
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
- 使用属性加载器读取配置文件
<!-- 引入spring-context命名空间 和 约束空间 --><context:property-placeholder location="classpath:jdbc.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.userName}" /><property name="password" value="${jdbc.userPassword}" /></bean>
4. 测试spring数据源连接
connection is connected...oracle.jdbc.driver.T4CConnection@137b2b07
{CreateTime:"2020-07-19 14:40:13",ActiveCount:1,PoolingCount:0,CreateCount:1,DestroyCount:0,CloseCount:0,ConnectCount:1,Connections:[]
}