《笔者带你剖析Spring3.x JDBC》
前言
笔者在之前的系列博文中,曾经讲解过Apache旗下的DbUtils工具(http://gao-xianglong.iteye.com/blog/2166444)。简单来说,这一款工具对JDBC实施了非常轻量级的封装,只要你会使用JDBC,估计半个小时,或许你就能够熟练掌握DbUtils的基本用法,当然笔者并不是让你立即换掉你生产环境中的持久层选项,而是告诉你,在互联网场景下,越简单,越纯粹,越贴近原生是最好的,因为这样会拥有更好的灵活性、伸缩性,以及高性能(毕竟封装层次越高,开销越大,同样组件的“可见性”会更加模糊,对于开发人员而言,则为黑盒)。
无论从哪一个角度来看,DbUtils都是一款不错的持久层工具,天生具备优秀的灵活性、伸缩性,但是与此同时也伴随着一定的缺陷。试想一下,在一些项目周期较紧的情况下,你的Project Manager是不太可能给你足够充裕的时间去编写相应的Template(除非项目组编写有公共组件),并且在集成有Spring环境的项目中,也确实没有太多必要将DbUtils再次集成。看到这里,笔者本篇博文的主角诞生了,那就是Spring JDBC。同Apache的DbUtils相比,尽管Spring JDBC在封装上会显得更加“丰满”一些,但随之提升的简易性会大大缩短项目的开发周期,提高生产效率,因此所带来的一些额外开销也就不值一提。这便是笔者在当前项目中选择它的最主要的原因,有现成的Templet,以及同样不失灵活性、伸缩性的前提下,选择Spring JDBC作为持久层的开发工具将会比DbUtils更加诱人,那么说道这里,你,动心了吗?
目录
一、下载Spring JDBC的相关构件;
二、配置参数;
三、基于Spring JDBC的CRUD示例;
四、RowMapper;
五、JdbcTemplate;
六、基于@注解的声明式事物管理;
一、下载Spring JDBC的相关构件
笔者使用Maven对项目进行管理,自然而言,就不会再单独进行Spring JDBC构件的下载,而是由Maven来对相关构件进行管理。在本篇博文中,笔者所使用的Spring版本为3.2.13,如下所示:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${org.springframework-version}</version> </dependency>
二、配置参数
当Maven成功下载好Spring JDBC所需的构件后,接下来的任务就是在Spring持久层配置文件中配置相关的数据源信息。首先需要配置的是数据源信息,考虑到后期的维护性,数据源信息笔者单独存放在一个properties文件中,在Spring持久层配置文件中通过标签“<context:property-placeholder/>”进行加载。这里笔者插一句题外话,在一些大型的分布式+集群环境的项目中,最好采用集中式的资源配置方式,而非继续采用这种静态配置文件的方式,因为如果一旦配置信息发生改变时,可以动态响应,并通知程序实时更新,以此更大程度上降低维护成本,这里笔者推荐淘宝开源的Diamond中间件(实在不行,存放在DB也行,自己写个组件执行参数变化后的动态响应即可)。
回到正题,数据源信息无非就是定义了一堆与DB链接相关的参数以及连接池相关的信息,笔者在本篇博文中所使用的DB连接池为c3p0,当然你也可以选用其它的DB连接池,笔者在此不过多进行讲解。关于Spring JDBC的相关数据源配置参数,如下所示:
<!-- 加载本地数据源配置信息 --> <context:property-placeholder location="classpath:*.properties" /> <!-- 定义数据源信息 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${name}" /> <property name="password" value="${password}" /> <property name="jdbcUrl" value="${jdbcUrl}" /> <property name="driverClass" value="${driverClass}" /> <property name="initialPoolSize" value="${initialPoolSize}" /> <property name="minPoolSize" value="${minPoolSize}" /> <property name="maxPoolSize" value="${maxPoolSize}" /> <property name="maxStatements" value="${maxStatements}" /> <property name="maxIdleTime" value="${maxIdleTime}" /> </bean> <!-- 配置JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>
相关推荐
文件中反复提及的“更多最新编程资源分享下载站***”并不是具体的Spring 3.x企业应用开发知识点。同时,重复的内容无法提供足够的信息来详细说明“Spring 3.x企业应用开发实战”中的知识点。 为了生成关于“Spring ...
在搭建Spring 3.x开发环境时,我们首先要理解Spring的核心概念和它在Java应用程序中的作用。Spring是一个开源的Java框架,主要用于简化企业级应用的开发,通过依赖注入(Dependency Injection, DI)和面向切面编程...
《Spring3.x企业应用开发实战》是一本...通过分析和实践这些源码,读者可以深入理解Spring3.x框架的工作原理,掌握企业级应用开发的关键技能。同时,结合书中的理论知识,可以更好地将理论与实践相结合,提升开发能力。
《精通Spring4.x》这本书是针对企业应用开发的深度指南,涵盖了Spring框架的核心技术,旨在帮助读者深入理解和熟练运用Spring4.x版本。书中的内容详细且实用,包括了以下几个主要的知识点: 1. **IoC(Inversion of...
在Spring4.x中,你可以看到`ApplicationContext`是如何加载配置并创建bean实例的,以及`BeanFactory`接口及其实现如何负责bean的生命周期管理。通过源码,我们可以学习到`@Autowired`注解的工作原理,了解它是如何...
《Spring 3.x 企业应用开发实战》是一本深度探讨Spring框架在企业级应用中的实践指南,特别适合那些想要深入理解和应用Spring 3.x版本的开发者。这本书通过丰富的实例和详细的代码,帮助读者掌握如何利用Spring进行...
《Spring+3.x企业应用开发实战》是一本深入讲解如何使用Spring框架进行企业级应用程序开发的书籍。在光盘源码中,包含了从第2章到第19章的全部源代码,这些代码实例覆盖了Spring框架的核心特性和实际应用场景。值得...
《精通Spring 2.x企业应用开发详解源代码》是一本深度剖析Spring 2.x版本在企业级应用开发中的实践指南。书籍中包含了丰富的实例和源码,旨在帮助开发者深入理解和熟练掌握Spring框架的核心特性和最佳实践。由于资源...
5. **IDE或运行环境设置**:如果你在集成开发环境中(如Eclipse、IntelliJ IDEA)工作,确保IDE配置正确,将驱动库包含在构建路径中。如果是服务器环境,比如Tomcat或Jetty,需要把驱动jar_FILE复制到服务器的lib...
在Java Web开发中,`org.springframework.web.context.ContextLoaderListener` 是Spring框架的一部分,它负责初始化一个Web应用程序的Spring上下文。这个监听器是基于Servlet容器(如Tomcat、Jetty等)的,当Web应用...
《深入剖析Spring Framework 3.2.x:Eclipse开发环境搭建与源码探索》 Spring Framework作为Java领域中最重要的轻量级框架之一,其3.2.x版本在当时具有广泛的影响力。本文将针对《spring-framework-3.2.x-for-...
《深入分析Spring源码》 Spring框架作为Java领域最广泛使用的框架之一,其设计思想和实现方式对于开发者来说具有极高的学习价值。本篇将详细探讨Spring中运用的设计模式及其重要性。 首先,Spring框架中广泛应用了...
《深入剖析Spring Framework 5.1.x:基于IDEA与Gradle的源码构建》 在软件开发领域,Spring Framework是Java平台上的一个基石,它为开发者提供了丰富的功能,包括依赖注入、面向切面编程、数据访问、Web应用支持等...
根据提供的文件信息,“Spring 3.x企业应用开发实战.pdf(高清版)”这份文档主要聚焦于Spring框架在企业级应用中的开发与实践。Spring框架是一个开源的Java平台,用于简化企业级应用程序的开发,它提供了全面的基础...
10. **文档与学习资源**:Spring 5.1.x 随带的中文文档覆盖了所有核心模块,详尽阐述了每个特性的使用方法和原理,为开发者提供了一手的学习资料。 通过深入学习 Spring 5.1.x 的源码,开发者不仅可以掌握这一强大...
通过阅读和分析源码,你将能更好地掌握Spring框架的设计思想,提升自己的编程技能和解决问题的能力。 总之,"spring-framework-5.1.x"压缩包提供了一个完整的Spring 5.1.x源码环境,对于想要深入了解Spring框架、...
3. **数据访问**:深入探讨Spring与JDBC、ORM框架如Hibernate和MyBatis的整合,以及对JPA的支持,包括事务策略和数据源配置。 4. **Web开发**:讲解MVC框架的使用,包括控制器、视图解析、模型数据传递,以及如何...
标题 "pecompact 2.x-3.x 最新脱壳机" 指向的是一个专门针对 PECompact 2.x 至 3.x 版本压缩壳的脱壳工具。PECompact 是一种流行的可执行文件压缩和保护技术,它用于减小程序体积并提供一定程度的反调试和反逆向工程...
《Spring 3.x企业应用开发实战》是一本深入讲解如何使用Spring框架进行企业级应用程序开发的书籍,结合了源码分析,旨在帮助开发者熟练掌握Spring的核心技术和实际运用。该书适用于有一定Java基础并希望深入了解...
SpringBlade是一个基于Spring Boot开发的现代化企业级应用框架,其2.7商业版提供了全套的jar包,旨在简化企业级开发工作,提高开发效率。本文将深入探讨SpringBlade框架的核心特性、主要组件以及如何在项目中进行...