严格的说。这里征服的是关系型数据库。之后笔者会以MongoDB为例,给出非关系型数据库的解决方式,敬请期待。

获取连接,操作,关闭,不知所云的异常...是的,你受够了。在使用纯JDBC时你訪问数据库时写的80%的代码是反复的,对此,Spring给的方案是 模板 + 回调。模板就是訪问数据库时的固定操作。回调是变化的部分。

针对不同的持久化平台。你可选的模板是不同的;假设使用的是JDBC,能够选择JdbcTemplate,假设使用特定的ORM框架,能够选择HibernateTemplate或SqlMapClientTemplate等。

选择哪个JDBC模板是须要权衡的,由于随着Spring的更新。其API的变化导致选择的考虑不同。比方。在Spring2.5时,NamedParameterJdbcTemplate的功能并入到SimpleJdbcTemplate,我们一般选择SimpleJdbcTemplate。可是Spring 3.1之后。SimpleJdbcTemplate被废弃了,官方的解释是:since
Spring 3.1 in favor of JdbcTemplate and NamedParameterJdbcTemplate.
The JdbcTemplate and NamedParameterJdbcTemplate now provide all the functionality of the SimpleJdbcTemplate.  也就是官方推荐我们使用JdbcTemplate和NamedParameterJdbcTemplate了。由于它们有SimpleJdbcTemplate的全部功能了。

关于各种模板的API太多,没什么可说,必要时查API就可以。

在程序开发过程时就使用MySql等显得有点臃肿,你想着,“我就像看看这个数据訪问能否成功,还得配置个MySQL,太麻烦了”。确实是。Spring针对此问题给我们提供了嵌入式Java 数据库引擎,并原生支持
HSQL,H2和Derby三种。

我们来看它假设配置数据源的。

  <jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:schema.sql"/>
<jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

默认是启用HSQL数据库。你也能够设置type属性来自己定义,如

<jdbc:embeded-database id="dataSouce" type="H2" >

以下的两行各自是设置了创建模式的脚本和原始数据的脚本。文件放在类载入路径下。文件名称不重要。但要注意顺序。即先有模式后有数据。

当然。要正常使用H2,你须要把H2的驱动Jar放在Build Path下,假设你使用的是Maven,仅仅需加入依赖:

	<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.181</version>
</dependency>

使用Spring时,一个头痛的问题是XML配置文件非常繁琐,尽管如今能够做到“自己主动装配和自己主动检測”。但还是推荐把不同用途的bean分开放置。

比方这里的数据源,是数据相关的,能够分开放。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> <jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:schema.sql" />
<jdbc:script location="classpath:data.sql" />
</jdbc:embedded-database> </beans>

把上面的文件放在dataSourc-context.xml文件内(在类载入路径。文件名称不重要),最后仅仅需在主XML里import进来就能够了。

<import resource="classpath:dataSource-context.xml"/>

主XML就能够使用它来装配模板了。

  <bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>

在自己定义的Dao里面注入这个jdbcTemplate就能够訪问数据库了。

另外。Spring基于模板和回调,提供了 Dao支持类,能够将自己的Dao继承它。所以整个訪问数据库的步骤例如以下:

官方对JdbcDaoSupport的说法是:

Convenient super class for JDBC-based data access objects. Requires a DataSource to be set, providings
a JdbcTemplate based on it to subclasses through the getJdbcTemplate() method。

是的,它有非常多子类,相应不同的模板。

你能够在想,使用它的优点是什么呢?

之前我们每一个Dao都得有个JdbcTemplate对象。并有相应的setter方法。假设有非常多Dao。反复同样的代码有点不必要。假设继承了JdbcDaoSupport的某一个子类。你能够直接使用 getJdbcTemplate()。

怎样使用呢?

1。 让你的Dao继承JdbcDaoSupport的某一个子类

2,
參数注入datasource,(该属性是jdbcDaoSupport的。name是datasoruce)

3,
代码里能够使用getJdbcTemplate()获取模板。

可是。随着代码规模的增大,使用JDBC的方式还是有点难以维护。这时一般选用ORM框架应对这一挑战。

Spring : 征服数据库(一)的更多相关文章

  1. Spring征服数据库

    一.spring的数据访问哲学 1. Srping的目标之一就是允许我们在开发应用程序的时候,能够遵循面向对象(Object Oriented,OO)原则中的"针对接口式编程"; ...

  2. Spring : 征服数据库 (两)

    本节介绍Spring和ORM集成框架.尽管Hibernate在开源ORM 社区很受欢迎.但是,本文将MyBatis案例解说.也MyBatis和Hibernate好坏是没有意义的,主要看实际需求,有兴趣 ...

  3. 第五章 征服数据库(Spring对DB的使用)——开发持久层

    本章内容: 定义Spring对数据库访问的支持 配置数据库资源 使用Spring的JDBC模板 在几乎所有的企业级应用中,都需要构建数据持久层.现在意义上的数据持久层是指把对象或者数据保存到数据库中, ...

  4. Spring 链接数据库

    一.前言 Spring 现在是我们在做 JavaWeb 开发中,用的最主流的框架.以后是不是我们暂时不知道,但现在是.废话不多我就介绍 Spring 中.链接数据库的三种方式: git源码地址 需要的 ...

  5. 黑马-Spring与数据库

    Spring与数据库 Spring与jdbc 引入dataSource 在客户端 模板编程 类的结构图, 真正干活的是JdbcTemplate(底层实现,操作 excute方法) JdbcTempla ...

  6. 8.spring:事务管理(上):Spring的数据库编程、编程式事务管理

    Spring的数据库编程 Spring框架提供了JDBC模板模式------>JdbcTemplate 简化了开发,在开发中并不经常是使用 实际开发更多使用的是Hibernate和MyBatis ...

  7. Spring的数据库编程浅入浅出——不吹牛逼不装逼

    Spring的数据库编程浅入浅出——不吹牛逼不装逼 前言 上文书我写了Spring的核心部分控制反转和依赖注入,后来又衔接了注解,在这后面本来是应该写Spring AOP的,但我觉得对于初学者来说,这 ...

  8. Spring(四)Spring与数据库编程

    Spring最重要的功能毫无疑问就是操作数据.数据库的百年城是互联网编程的基础,Spring为开发者提供了JDBC模板模式,那就是它自身的JdbcTemplate.Spring还提供了Transact ...

  9. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

随机推荐

  1. win7笔记本设置wifi热点

    1.打开cmd 输入netsh wlan set hostednetwork mode=allow ssid=ACE-PC key=12345678 2.等待1-2分钟后,网络连接里会出现一个&quo ...

  2. spark pipeline 例子

    """ Pipeline Example. """ # $example on$ from pyspark.ml import Pipeli ...

  3. spring boot整合mail

    1.添加依赖 </dependency> <dependency> <groupId>org.springframework.boot</groupId> ...

  4. CF402E Strictly Positive Matrix(矩阵,强联通分量)

    题意 给定一个 n∗n 的矩阵 A,每个元素都非负判断是否存在一个整数 k 使得 A^k 的所有元素 >0 n≤2000(矩阵中[i][i]保证为1) 题解 考虑矩阵$A*A$的意义 ,设得到的 ...

  5. 用xstart远程连接linux图形用户界面时发生已经在使用的情况

    1.举例打开pycharm 2.此时要输入ps aux|grep pycharm,出现下面的情况 3.然后找到矩形圈住的内容,然后输入 这样就杀掉了远程机子上pycharm,接着继续输入pycharm ...

  6. uptime---系统总共运行时间和系统的平均负载

    uptime命令能够打印系统总共运行了多长时间和系统的平均负载.uptime命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系统在过去的1分钟.5分钟和15分钟内的 ...

  7. Python 批处理文本文件、进行查找

    去年换了一部手机,老手机终于光荣退休了,但是里面的便签里还存有很多文字记录,这个手机还不能备份到云,只能将每个便签保留为一个个的文本文件,我想要把所有的文本文件归到一个文本文件中,手动操作太麻烦了,刚 ...

  8. C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)

    其原理是,利用winfrom模拟表单提交数据.将要提交的參数提交给网页,网页运行代码.得到数据.然后Winform程序将网页的全部源码读取下来.这样就达到windows应用程序和web应用程序之间传參 ...

  9. unix mkdir命令的使用方法

    [语法]:   mkdir [-m 模式] [-p]  文件夹名 [说明]:  本命令用于建立文件夹,文件夹的存取模式由掩码(umask)决定,要求对其父文件夹具有写权限,文件夹的UID和GID为实际 ...

  10. POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)

    POJ 1887Testingthe CATCHER (LIS:最长下降子序列) http://poj.org/problem?id=3903 题意: 给你一个长度为n (n<=200000) ...