原生方法
- 加载JDBC 驱动:
1 | Class.forName(driver); |
- 建立数据库连接:
1 | Connection conn = DriverManager.getConnection(url,userName,password); |
- 创建 statement,用来执行SQL 语句
1 | Statement statement = conn.createStatement(); |
- 执行 SQL 语句:
1 | ResultSet rs = statement.executeQuery(sql); |
- 关闭记录集,关闭声明,关闭连接对象
不足:
- 每次使用都要创建连接,使用完毕后还必须关闭连接,操作繁琐,易出错;
- 连接数据库资源不便统一管理;
使用Spring的 JDBC 方法:
- 引入 spring-jdbc.jar 包
- 添加 dataSource配置
1 | <bean id="dataSource"> |
DriverManagerDataSource 类位于 org.springframework.jdbc.datasource 包下。 当然这里还可以选择 SingleConnectionDataSource
DriverManagerDataSource -> 在每一个连接请求时都新建一个连接;
SingleConnectionDataSource -> 在每一个连接请求时都返回同一个连接;
- 获取dataSource bean对象
1 | ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); |
- 获取连接对象Connection和Statement
1 | Connection conn = ds.getConnection(); |
- 执行向数据库插入记录操作
1 | String sqlString = "insert into bryanttesttable values(2,'bryant')"; |
优势:
- 更干净的 代码;
- 更简单的使用;
- 更好的异常与资源处理;
Spring JDBC 介绍:模版设计模式(核心包包含JdbcTemplate),Spring JDBC 异常处理 ;这些会在下一章节来具体介绍Spring JDBC的优雅设计 和 是如何在 原生JDBC 上做封装的。
使用Spring的 数据库连接池 DBCP 方法:(四个流行的Java连接池)
需要引入commons-collections.jar、commons-dbcp.jar和commons-pool.jar。
1 | <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> |
使用 JNDI 连接数据库
1、SpringJNDI数据源配置信息:
1 | <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> |
jcptDataSourceJNDI是tomcat或者其他应用服务器配置的JNDI.
2、关于JNDI的配置(tomcat):
修改tomcat目录conf/context.xml文件:
1 | <Resource name="jcptDataSourceJNDI" auth="Container" type="javax.sql.DataSource" |
3、通过JNDI获取DataSource:
1 | <Resource name="jcptDataSourceJNDI" auth="Container" type="javax.sql.DataSource" |