用 Spring JdbcTemplate 实现相同的应用程序
通过 Spring JdbcTemplate 的支持可以减少冗余代码,同时也获得 Spring 管理特性带来的好处。
- 没有更改的内容:
- 更改的内容:
- DAO 实现文件已经变得非常小——已将所有重复的 JDBC 代码移至 Spring。
- 由于没有必要分配和发布 JDBC 资源,不会发生资源泄漏。
- 不必解释 SQLExceptions。Spring 已经帮助 DB2 这些主要 DBMS 完成了这个工作。
- 这个应用程序并不局限于特定的 DBMS 或数据访问实现。现在它由可以编辑的配置文本文件控制。
将要重用来自最后一节的 Bean 和接口类。需要添加或修改下面的组件:
- 一个更加简单的 DAO 实现 —— AccountDao.java
- 稍微修改应用程序,使它可以加载 Spring 配置文件,而不是直接实例化 DAO 对象 —— AccountApp.java
- 能够动态地配置数据源和 DAO 实现的配置文件 —— applicationContext.xml,jdbc.properties。
应用程序只加载了配置文件,并且让 Spirng 实例化 DAO 实现。Data Source 配置(比如 DBMS 供应商或连接信息)已经从 DAO 实现代码中移出,并放置到 Spring 配置文件中。
DAO 实现
模板 JDBC 代码已经替换成 Spring JdbcTemplate。因此,不再需要通过实现代码来获得连接、捕获 SQL 异常、遍历结果集或清理资源。一个简单的 queryForList(String sql)
调用返回一个映射列表。可以通过 RowMapper 将每个返回的行映射到 bean 类。清单 5 给出了一个使用 Spring JdbcTemplate 的 DAO 实现。
清单 5. AccountDao.java
package com.test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class AccountDao extends JdbcDaoSupport implements AccountData{
@SuppressWarnings("unchecked")
public List<Account> getAccounts()
{
JdbcTemplate daoTemplate = this.getJdbcTemplate();
RowMapper mapper = new RowMapper (){
public Object mapRow(ResultSet rs,int rowNum) throws SQLException {
Account act = new Account();
act.setActno(rs.getShort("ACTNO"));
act.setActkwd(rs.getString("ACTKWD"));
act.setActdesc(rs.getString("ACTDESC"));
return act;
}
};
return daoTemplate.query(sql, mapper );
}
}
|
应用程序需要加载 Spring 配置文件,从而启动 Spring 框架、获取由该配置定义的 DAO,然后像前面一样调用 getAccounts()
在接口中声明的方法。清单 6 展示了这个应用程序。
清单 6. AccountApp.java
package com.test;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AccountApp {
public static void main(String[] args) {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml"});
AccountData dao = (AccountData) ac.getBean("ACT_DAO");
List<Account> actList = dao.getAccounts();
for (Account act : actList )
System.out.println(" ACTNO=" + act.getActno() +
" ACTKWD="+ act.getActkwd() + " ACTDESC="+act.getActdesc());
}
}
|
Spring 使用配置文件初始化并启动框架。本教程使用一个简单的配置文件 “applicationContext.xml”(参见清单 7),从属性文件中获取数据源信息,以及定义这个应用程序所使用的 DAO 实现类。清单 7 是一个 Spring 配置文件示例。
清单 7. applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- replaces ${...} placeholders with values from properties files -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean>
<!-- Define datasource -->
<bean id="DB2DataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- Configure DAO -->
<bean id="ACT_DAO" class="com.test.AccountDao">
<property name="dataSource">
<ref bean="DB2DataSource" />
</property>
</bean>
</beans>
|
清单 8 是一个示例连接属性文件。
清单 8. jdbc.properties
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
jdbc.url=jdbc:db2://localhost:50000/sample:traceFile=C:/sample.log;
traceLevel=-1;traceFileAppend=true;
jdbc.username=USERNAME
jdbc.password=PASSWORD
|
如本教程开始时所述,除了数据访问之外,Spring 也支持其他特性,比如事务管理。将清单 9 中的代码添加到配置文件 applicationContext.xml,启用 Spring 的声明性事务管理。
清单 9. 事务管理器
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="DB2DataSource"/>
</bean>
|
本实例需要用到如下jar:
- spring.jar
- commons-logging.jar
- commons-dbcp.jar
- commons-pool.jar
分享到:
相关推荐
此外,随3.0.5.RELEASE发布的`springframework-license.txt`文件包含了框架的许可信息,这表明Spring遵循Apache 2.0开源协议,鼓励开发者在遵守许可条款的情况下自由使用、修改和分发。 总结起来,Spring Web 3.0.5...
提示二:Spring.cfg.xml中【objects xmlns="http://www.springframework.net" xmlns:db ="http://www.springframework.net/database" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns...
Spring Boot 基于 Spring Framework 和其他 Spring 家族项目构建,它内置了对许多常见技术的自动配置,如数据访问、安全、Web 服务等。 在“Spring-boot所需jar包”中,提到的 "springmvc.jar" 是 Spring MVC 的...
在Visual Studio 2008环境下开发,这个项目为我们展示了如何在ASP.NET应用中集成和利用Spring.NET的优势。 首先,"Solution1.sln"是Visual Studio的解决方案文件,包含了整个项目的所有组件和配置信息。打开这个...
Spring Boot 2 支持各种集成,包括嵌入式 Tomcat、Jetty 和 Undertow 服务器,以及多种语言和工具支持。 #### Spring Boot 2 的特点: - **自动配置**:根据类路径中的 jar 文件自动配置 Spring。 - **启动器依赖*...
1, DataAccess 数据访问层, 使用Ado.Net和Sql2005交互..数据访问层基本的Model, 单表基本操作存储过程, Dao代码可以由"动软代码生成工具修改版"生成 2, WebService 调用数据访问层, 提供Web层需要的数据. 使用...
SpringTools则进一步简化了Spring应用的开发流程,它集成了多种开发环境,如Eclipse、Visual Studio Code等,为开发者提供了代码智能提示、项目配置向导、Bean可视化编辑等功能。 在"SpringTools:Spring实践"这个...
该项目名为"Projeto_JavaSpringBootAndroidStudio_CSharpDesktop",它是一个综合性的软件开发项目,结合了多种技术栈,包括Java、Spring Boot、Android Studio和C#桌面应用。这个项目的目标是创建一个跨平台的应用...
9. **集成开发环境(IDE)**:开发者可能使用Eclipse、IntelliJ IDEA或Visual Studio Code等IDE来编写和调试代码。 10. **构建工具**:可能使用Maven或Gradle作为构建工具,管理项目依赖并自动化构建过程。 由于...
在本项目"273-assignment2"中,我们看到涉及了三个主要技术:Java、Spring Framework和AngularJS。这些都是IT行业中非常关键的组件,分别用于后端开发、企业级应用框架以及前端交互。让我们详细了解一下这三个技术...
本系统可能采用了Spring Boot,它是Spring Framework的一个扩展,旨在简化Spring应用的初始搭建以及开发过程。Spring Boot默认配置了很多功能,如嵌入式Tomcat服务器、自动配置Spring等,使得开发者可以快速构建可...
- JBoss Developer Studio是一个集成开发环境,支持JBoss和Eclipse技术。 - WebLogic、WebSphere和JBoss是流行的Java EE应用服务器。 9. 应用服务器与容器 - IOC(Inversion of Control)容器,如Spring和JBoss...
ASP.NET是由微软公司推出的Web应用程序框架,它允许开发者使用.NET Framework构建动态网站、Web应用程序和服务。这个源码可能是用于学习、研究或者改进该公司网站的内部工作原理。 【描述】中提到的“asp.net vs...
开发者使用Java或Kotlin语言编写Android应用程序,这些应用程序可以在Android Studio集成开发环境中创建和测试。 3. **AWS (Amazon Web Services)**: AWS 是亚马逊提供的云服务集合,包括计算、存储、数据库、分析...
比如“Hive.Site.Service”可能包含了网站的核心服务类,“Hive.Component.Data”可能是数据访问层,处理与数据库的交互,“Hive.Site.WebService.Service”则可能是定义了Web服务的接口和实现。 4. **Hive.Core....
8. 开发框架与工具:如Spring框架在Java中的应用,或者.NET Framework在C#中的使用,以及如何配合IDE(如Eclipse、IntelliJ IDEA或Visual Studio)进行开发。 9. 数据库设计:包括关系型数据库如MySQL、Oracle,...
三层图书管理系统是一个典型的软件架构设计,它将应用分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种设计模式旨在提高系统的可维护...
4. **设置开发工具**:选择合适的IDE(集成开发环境),如Visual Studio、Eclipse等,并配置好必要的插件或扩展。 #### 四、MapGuide 核心组件介绍 MapGuide的核心组件主要包括以下几个部分: 1. **MapGuide ...
常用组件是一些常用的组件和可复用API的集合,它包含了公共方法、异常处理,缓存、验证、全球化\本地化、动态类生成器、Data Context工厂、日志处理、事物处理、Spring.NET整合等等 扩展模型 扩展模型可以让你在...
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设定默认编码 --> <!-- 设定最大上传文件大小,单位为MB --> ``` 2. **控制器处理...