Spring的MVCWeb应用中的持久层技术.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring的MVC Web应用中的持久层技术 1、常规的JDBC编程实现 (1)比较糟糕的设计方案:业务层组件与数据访问组件混合在一起 我们在常规的编程实现中,经常会在业务类中既写业务逻辑处理,同时又写与底层存储媒介交互代码,使业务类变得复杂,且不便于维护。 (2)将数据访问从业务处理类中分离中,形成DAO组件 因此我们用DAO模式将业务逻辑与底层存储媒介交互分离,DAO的英文全称为Data Access Object。DAO充当业务层与持久层的交互入口。 2、Spring中的DAO程序的代码进一步对 JDBC作了简化 (1)下面为Spring中的DAO程序的代码示例。 (2)Spring对持久层的支持技术:提供一个JdbcTemplate类来实现JDBC的数据库访问,并简化其编程实现。 3、利用Spring的JdbcTemplate类来实现JDBC的数据库访问 (1)常规的JDBC的访问代码所存在的问题 JDBC 提供了还算不错的数据库抽象,但是需要用痛苦的API。这些问题包括: 由于JDBC是一个非常基础的数据存取API,并且它封装了对关系型数据库的访问 但是我们应该承认的是,JDBC仍然属于层次较低的API,所以在使用的时候,我们不得不编写大量的代码,来完成一件简单的工作。 需要冗长的错误处理代码来确保ResultSets,Statements以及(最重要的)Connections在使用后关闭 这意味着对JDBC的正确使用可以快速地导致大量的代码量。它还是一个常见的错误来源。Connection leak可以在有负载的情况下快速宕掉应用程序。 JDBC不提供异常的层次 SQLException相对来说不能说明任何问题,JDBC不提供异常的层次,而是用抛出SQLException来响应所有的错误。找出到底哪里出错了——例如,问题是死锁还是无效的SQL?——要去检查SQLState或错误代码。这意味着这些值在数据库之间是变化的。 (2)作为对比,首先让我们来看一段传统的JDBC代码: Connection conn =null; Statement stmt = null; try { conn = dataSource.getConnection(); stmt = con.createStatement(); stmt.executeUpdate(UPDATE userInfo SET age = 18 WHERE id = erica); } catch(SQLException e) { } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException ex) { logger.warn(Exception in closing JDBC Statement, ex); } } if (conn != null) { try { conn.close(); } catch (SQLException ex) { logger.warn(Exception in closing JDBC Connection, ex); } } } 类似上面的代码非常常见。主要的问题体现在下面几点: 为了执行一个SQL语句,我们必须编写这么多行的代码,而其中很多行的代码与应用逻辑并无关 因为,我们必须自己获得Connection与Statement对象、执行SQL、捕捉异常、关闭相关的资源),并且,这样的代码还会在系统其他地方(也许是每个需要数据库访问的地方)重复出现。 对于重复性的劳动,我们应该使其自动化 如何使其自动化呢?我们应该知道,在一般的JDBC查询功能实现中除了SQL语句的不同以及记录集的处理不同以外,大部分的查询代码都没有太大的差别,所以我们的目标就是抽取共同的部分,而把特定的部分留给开发人员自己。 于是,大家开始寻找一些设计模式以改进如此的设计,Template模式的应用是其中一种典型的改进方案。 (3)利用Spring中的JdbcTemplate类来进行数据库访问 Spring的JDBC封装,很大一部分就是借助Template模式实现,它提供了一个优秀的JDBC模板库,借助这个工具,我们可以简单有效的对传统的JDBC编码方式加以改进。 下面是借助Spring JDBC Template修改过的代码,这段代码完成了与上面代码相同的功能。 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(UPDATE user SET age = 10 WHERE id = erica); 可以看到,两行代码完成了上面需要多行代码

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档