第10章 通过Spring和JDBC征服 数据库
2017-07-10 15:25
351 查看
概述:
数据库是应用的血液,如何让血液流动起来?这就需要JDBC
可能出现异常
应用程序无法连接数据库
要执行的查询存在语法错误
查询所有使用的表或者列不存在
试图插入或更新的数据违反了数据库的约束
Spring具体化异常内容
例如:BadSqlGrammarException 、DuplicateKeyException
通过JNDI查找的数据源
连接池的数据源
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/SpitterDS" resource-ref="true"/>
方式二:java
@Bean
public JndiObjectFactoryBean dataSource(){
JndiObjectFactoryBean jndiObjectFB = new JndiObjectFactoryBean();
jndiObjectFB.setJndiName("jdbc/SpitterDS");
jndiObjectFB.setResourceRef(true);
jndiObjectFB.setProxyInterface(javax.sql.DataSource.class);
return jndiObjectFB;
}
c3p0
BoneCP
配置DBCP BasicDataSource的方式
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="org.h2.Driver"
p:url="jdbc:h2:tcp://localhost/~/spitter"
p:password=""
p:initialSize="5"
p:maxActive="10" />
java方式:
@Bean
public BasicDataSource dataSource(){
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("org.h2.Driver");
ds.setUrl("jdbc:h2:tcp://localhost/~/spitter");
ds.setUsername("sa");
ds.setPassword("");
ds.setInitialSize(5);
ds.setMaxActive(10);
return ds;
}
SimpleDriverDataSource:解决特定的环境的类加载问题
SingleConnectionDataSource :每次只有一个连接
使用标签<jdbc:embedded-database> 引用Spring命名空间
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
"http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd"
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location ="com/habuma/spitter/db/jdbc/schema.sql"/>
<jdbc:script location="com/habuma/spitter/db/jdbc/test-data.sql"/>
</jdbc:embedded-database>
java方式
@Bean
public DataSource dataSource(){
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:schema.sql")
.addScript("classpath:test-data.sql")
.build();
}
数据库是应用的血液,如何让血液流动起来?这就需要JDBC
1、了解Spring的数据访问异常体系
如果纯JDBC进行数据操作时抛出SQLException 表示异常不明确可能出现异常
应用程序无法连接数据库
要执行的查询存在语法错误
查询所有使用的表或者列不存在
试图插入或更新的数据违反了数据库的约束
Spring具体化异常内容
例如:BadSqlGrammarException 、DuplicateKeyException
2、数据访问模块化
有些代码是重复的,这时候想模板化代码3、配置数据源
通过JDBC驱动程序定义的数据源通过JNDI查找的数据源
连接池的数据源
3.1使用JNDI相当于将数据源绑定到应用服务器上
方式一、xml<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/SpitterDS" resource-ref="true"/>
方式二:java
@Bean
public JndiObjectFactoryBean dataSource(){
JndiObjectFactoryBean jndiObjectFB = new JndiObjectFactoryBean();
jndiObjectFB.setJndiName("jdbc/SpitterDS");
jndiObjectFB.setResourceRef(true);
jndiObjectFB.setProxyInterface(javax.sql.DataSource.class);
return jndiObjectFB;
}
3.2 使用连接池
Apache Commons DBCPc3p0
BoneCP
配置DBCP BasicDataSource的方式
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="org.h2.Driver"
p:url="jdbc:h2:tcp://localhost/~/spitter"
p:password=""
p:initialSize="5"
p:maxActive="10" />
java方式:
@Bean
public BasicDataSource dataSource(){
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("org.h2.Driver");
ds.setUrl("jdbc:h2:tcp://localhost/~/spitter");
ds.setUsername("sa");
ds.setPassword("");
ds.setInitialSize(5);
ds.setMaxActive(10);
return ds;
}
3.3 基于JDBC驱动的数据源
DriverManagerDataSource:每次都创建一个新连接SimpleDriverDataSource:解决特定的环境的类加载问题
SingleConnectionDataSource :每次只有一个连接
3.4 基于嵌入式数据Derby数据库
xml 方式使用标签<jdbc:embedded-database> 引用Spring命名空间
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
"http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd"
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location ="com/habuma/spitter/db/jdbc/schema.sql"/>
<jdbc:script location="com/habuma/spitter/db/jdbc/test-data.sql"/>
</jdbc:embedded-database>
java方式
@Bean
public DataSource dataSource(){
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:schema.sql")
.addScript("classpath:test-data.sql")
.build();
}
4、通过profile来选择不同jdbc数据源
参考第三章。相关文章推荐
- spring(10)通过spring 和 JDBC征服数据库
- Spring 实战-第十章-通过Spring和JDBC征服数据库
- Spring学习笔记之通过Spring和JDBC征服数据库
- spring通过jdbc连接数据库
- (笔记)Spring实战_征服数据库(3)_在Spring中使用JDBC
- Spring和数据库连接 --- 征服数据库jdbc
- Spring 使用JDBC对数据库进行访问
- Spring使用JDBC操作数据库
- SpringJDBC抽象框架简化Web数据库开发
- 如何通过JDBC取得数据库表结构信息
- 在Java程序中,通过JDBC访问数据库
- java操作数据库的演进jdbc-datasource-hibernate-spring
- spring连结数据库(jdbc , hibernate)
- JDBC通过DatabaseMetaData对象了解数据库信息
- Spring配置下通过tomcat的jndi服务连接数据库
- JDBC通过DatabaseMetaData对象了解数据库信息
- JDBC通过反射机制批量的把List里面的对象添加到数据库中
- JDBC之通过DatabaseMetaData对象了解数据库的信息
- JDBC通过连接池链接数据库总是失败的解决办法
- 通过JDBC访问Sybase ASE 15.5数据库