第10章 通过Spring和JDBC征服数据库
10.1.2 数据访问模板化
spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类:模板(template)和回调(callback)。模板管理过程中固定的部分,回调处理自定义的数据访问代码。
Spring的模板类处理数据访问的固定部分——事物控制、管理资源以及处理异常。同时,应用程序相关的数据访问——语句、绑定参数以及整理结果集——在回调的实现中处理。事实证明,这是一个优雅的架构,因为你只需关心自己的数据访问逻辑即可。
针对不同的持久化平台,Spring提供了多个可选的模板。如果直接使用JDBC,那选择JdbcTemplate。如果选择Hibernate,那就使用HibernateTemplate。
要说明的是Spring所支持的大多数持久化功能都依赖于数据源。因此,在声明模板和Repository之前,我们需要在Spring中配置一个数据源用来连接数据库。
10.3.1 应对失控的JDBC代码
如果使用JDBC所提供的直接操作数据库的API,你需要负责处理与数据库访问相关的所有事情,其中包含管理数据库资源和处理异常。
一个JDBC插入一个简单的对象的例子,就需要20行的代码。再看更新代码,再看查询代码。出路SQL字符串和创建语句,其他的代码都是相同的。在理想情况下,我们只需要编写与特定任务相关的代码。然而,JDBC中,只有20%的代码是真正用于查询数据的,而80%代码都是样板代码。然而,这些样板代码很重要,所以,我们需要框架来保证这些代码只写一次而且是正确的。
10.3.2 使用JDBC模板
Spring将数据访问的样板代码抽象到模板类之中。我们使用Spring的模板类JdbcTemplate。
为了让JdbcTemplate正常工作,只需要为其设置DataSource就可以了。
给JdbcTemplate注入的DataSource bean可以是javax.sql.DataSource的任意实现。
然后,将JdbcTemplate bean注入到Repository bean中,进行持久化操作。
第11章 使用对象-关系映射持久化数据
11.1 在Spring中集成Hibernate11.1.1 声明Hibernate的Session工厂
使用Hibernate所需的主要接口是org.hibernate.Session。Session接口提供了基本的数据访问功能,如保存、更新、删除以及从数据库加载对象的功能。
获取Hibernate Session对象的标准方式是借助于Hibernate SessionFactory接口的实现类。出了一些其他的任务,SessionFactory主要负责Hibernate Session的打开、关闭以及管理。
在Spring中,我们要通过Spring的某一个Hibernate Session工厂bean来获取Hibernate SessionFactory。