`
jinnianshilongnian
  • 浏览: 21503063 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2418439
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008658
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639353
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259899
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597268
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250209
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858830
Group-logo
跟我学Nginx+Lua开...
浏览量:701943
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785142
社区版块
存档分类
最新评论

【第七章】 对JDBC的支持 之 7.1 概述 ——跟我学spring3

阅读更多

7.1  概述

7.1.1  JDBC回顾

       传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示:

 

java代码:
//cn.javass.spring.chapter7. TraditionalJdbcTest
@Test
public void test() throws Exception {
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = getConnection();              //1.获取JDBC连接
                                       //2.声明SQL
      String sql = "select * from INFORMATION_SCHEMA.SYSTEM_TABLES";
      pstmt = conn.prepareStatement(sql);    //3.预编译SQL
      ResultSet rs = pstmt.executeQuery();   //4.执行SQL
      process(rs);                       //5.处理结果集
      closeResultSet(rs);                 //5.释放结果集
      closeStatement(pstmt);              //6.释放Statement
      conn.commit();                    //8.提交事务
    } catch (Exception e) {
      //9.处理异常并回滚事务
      conn.rollback();
      throw e;
    } finally {
      //10.释放JDBC连接,防止JDBC连接不关闭造成的内存泄漏
      closeConnection(conn);
    }
}

 

       以上代码片段具有冗长、重复、容易忘记某一步骤从而导致出错、显示控制事务、显示处理受检查异常等等。

       有朋友可能重构出自己的一套JDBC模板,从而能简化日常开发,但自己开发的JDBC模板不够通用,而且对于每一套JDBC模板实现都差不多,从而导致开发人员必须掌握每一套模板。

       Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发,而且如果各个公司都使用该抽象框架,开发人员首先减少了学习成本,直接上手开发,如图7-1所示。

 

图7-1 Spring JDBC与传统JDBC编程对比

7.1.2  Spring对JDBC的支持

       Spring通过抽象JDBC访问并提供一致的API来简化JDBC编程的工作量。我们只需要声明SQL、调用合适的Spring JDBC框架API、处理结果集即可。事务由Spring管理,并将JDBC受查异常转换为Spring一致的非受查异常,从而简化开发。

       Spring主要提供JDBC模板方式、关系数据库对象化方式和SimpleJdbc方式三种方式来简化JDBC编程,这三种方式就是Spring JDBC的工作模式:

  •  JDBC模板方式:Spring JDBC框架提供以下几种模板类来简化JDBC编程,实现GoF模板设计模式,将可变部分和非可变部分分离,可变部分采用回调接口方式由用户来实现:如JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate。
  • 关系数据库操作对象化方式:Spring JDBC框架提供了将关系数据库操作对象化的表示形式,从而使用户可以采用面向对象编程来完成对数据库的访问;如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类。这些类的实现一旦建立即可重用并且是线程安全的。
  • SimpleJdbc方式:Spring JDBC框架还提供了SimpleJdbc方式来简化JDBC编程,SimpleJdbcInsert 、 SimpleJdbcCall用来简化数据库表插入、存储过程或函数访问。

Spring JDBC还提供了一些强大的工具类,如DataSourceUtils来在必要的时候手工获取数据库连接等。

7.1.4    Spring的JDBC架构

Spring JDBC抽象框架由四部分组成:datasource、support、core、object。如图7-2所示。

 

图7-2 Spring JDBC架构图

       support包:提供将JDBC异常转换为DAO非检查异常转换类、一些工具类如JdbcUtils等。

       datasource包:提供简化访问JDBC 数据源(javax.sql.DataSource实现)工具类,并提供了一些DataSource简单实现类从而能使从这些DataSource获取的连接能自动得到Spring管理事务支持。

       core包:提供JDBC模板类实现及可变部分的回调接口,还提供SimpleJdbcInsert等简单辅助类。

       object包:提供关系数据库的对象表示形式,如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类,该包是基于core包JDBC模板类实现。

 

 

原创内容,转载请注明 出处【http://sishuok.com/forum/blogPost/list/0/2489.html

25
0
分享到:
评论
4 楼 aokunsang 2013-06-21  
jinnianshilongnian 写道
aokunsang 写道
你好,请问:Bean里面有个Calendar类型字段对应数据库中Date类型,查询时候报错:Cannot convert value of type [java.sql.Timestamp] to required type [java.util.Calendar] for property 'writetime': no matching editors or conversion strategy found。
当然是用Date类型不会有问题,但是如果我想使用Calendar类型的话,有什么好的解决办法么?

你需要取回数据后自己转 目前我没有好办法

哦,tks。
3 楼 jinnianshilongnian 2013-06-21  
aokunsang 写道
你好,请问:Bean里面有个Calendar类型字段对应数据库中Date类型,查询时候报错:Cannot convert value of type [java.sql.Timestamp] to required type [java.util.Calendar] for property 'writetime': no matching editors or conversion strategy found。
当然是用Date类型不会有问题,但是如果我想使用Calendar类型的话,有什么好的解决办法么?

你需要取回数据后自己转 目前我没有好办法
2 楼 aokunsang 2013-06-21  
你好,请问:Bean里面有个Calendar类型字段对应数据库中Date类型,查询时候报错:Cannot convert value of type [java.sql.Timestamp] to required type [java.util.Calendar] for property 'writetime': no matching editors or conversion strategy found。
当然是用Date类型不会有问题,但是如果我想使用Calendar类型的话,有什么好的解决办法么?
1 楼 cheney0728 2012-09-06  
这三种方式有什么本质的区别呢?哪种更常用?

相关推荐

    跟开涛学Spring

    1.29 【第七章】 对JDBC的支持 之 7.1 概述 ——跟我学spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 1.30 【第七章】 对JDBC的支持 之 7.2 JDBC模板类 ——跟我学spring3 . . . . . . . ...

    跟我学spring3

    压缩包中的"gen-wo-xue-spring.pdf"可能是教程的概述或部分章节,"跟我学spring3(1-7).pdf"和"跟我学spring3(8-13).pdf"分为了两部分,覆盖了从基础到进阶的内容。"跟我学spring3-源码.rar"包含了示例代码,方便读者...

    跟我学spring

    【第七章】Spring对JDBC(Java Database Connectivity)的支持。7.1节概述Spring对JDBC的支持,7.2节介绍JDBC模板类,7.3节讨论关系数据库操作对象化的方法,7.4节和7.5节介绍Spring提供的其他帮助和集成Spring JDBC...

    跟我学spring3pdf,高清

    《跟我学Spring3》是一本深入浅出的Spring框架学习指南,...通过阅读这两部分PDF(跟我学spring3(8-13).pdf和跟我学spring3(1-7).pdf),你将能够逐步构建起对Spring框架的全面认识,从而在Java开发领域更上一层楼。

    dm7jdbcdriver-7.1.3.130.jar

    达梦数据库驱动包,dbvisual使用 国产数据库驱动包 dm7jdbcdriver-7.1.3.130.jar

    开涛 跟我学spring3 pdf+源码

    这本书分为两部分PDF文档:"开涛 跟我学spring3(1-7).pdf" 和 "开涛 跟我学spring3(8-13).pdf",分别覆盖了Spring框架的核心概念和技术,旨在帮助读者全面理解并掌握Spring框架的应用。 在第一部分(1-7章)中,...

    跟我学spring3(总共13章)8

    《跟我学Spring3》系列教程是为初学者和有经验的开发者提供的一份全面而深入的Spring框架学习资源。Spring3作为Java企业级应用开发的重要框架,它的核心特性包括依赖注入、AOP(面向切面编程)、数据访问、Web开发等...

    跟我学spring3(1-13)

    《跟我学Spring3》是一本深入浅出介绍Spring框架的电子书,分为两部分,分别是“跟我学Spring3(8-13).pdf”和“跟我学Spring3(1-7).pdf”,全面覆盖了Spring框架的核心概念和技术。Spring作为Java开发中的主流框架,...

    跟我学Spring3

    《跟我学Spring3》这本书是针对Java开发人员深入学习Spring框架第三版的一份教程。Spring作为Java企业级应用开发中的核心框架,它以其强大的功能、灵活性和模块化设计深受开发者喜爱。Spring3版本在前一版本基础上...

    跟我学Spring3(8.1)对ORM的支持之概述Java

    通过阅读《跟我学Spring3(8.1)对ORM的支持之概述Java开发Java经验技巧共3页.pdf》这本书或文档,你可以深入学习Spring如何无缝地集成ORM框架,提升你的Java开发技能。但请注意,压缩包内的"赚钱项目"文件可能与此...

    跟我学Spring,Spring3学习资料

    - **概述:** 介绍Spring对JDBC操作的支持,包括如何使用Spring提供的模板类来简化数据库操作。 - **JDBC模板类:** 为简化数据库操作提供了许多便利的方法。 - **关系数据库操作对象化:** 将传统JDBC操作中的结果...

    跟我学Spring3(7.5)对JDBC的支持之集成Spr

    在Spring 3版本中,它提供了对JDBC的全面支持,以帮助开发者更高效、更安全地处理数据库操作。本篇将深入探讨Spring 3如何集成Spring JDBC以及最佳实践。 首先,Spring JDBC的核心组件是JdbcTemplate,它是Spring...

    跟我学spring3 .pdf

    《跟我学Spring3》这本书是针对Spring框架进行深入解析的一本教程,涵盖了Spring的核心特性,包括IoC(Inversion of Control,控制反转)、DI(Dependency Injection,依赖注入)、AOP(Aspect-Oriented Programming...

    跟我学spring3(1-7)

    《跟我学Spring3》系列教程涵盖了Spring框架的核心概念和技术,包括IoC(Inversion of Control,控制反转)、DI(Dependency Injection,依赖注入)、资源管理、Spring表达式语言(SpEL)以及面向切面编程(AOP)等...

    跟我学spring3-源码.

    《跟我学Spring3-源码》教程是一份深入解析Spring框架3.x版本核心源码的教育资源,适合对Java和J2EE技术有一定基础的开发者学习。本教程旨在帮助读者理解Spring框架的工作原理,提高在实际项目中的应用能力。通过...

Global site tag (gtag.js) - Google Analytics