- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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);
可以看到,两行代码完成了上面需要多行代码
您可能关注的文档
- CIA第四部分经营管理技术.doc
- CIO职业规划作业.docx
- Cisco交换机命令简介.doc
- CoRT全腦思維訓練.ppt
- CSS网页样式设置.ppt
- C语言程序设计循环结构.ppt
- ERP实施分析报告.doc
- Ghost系统的安装、备份与还原.doc
- GPS测量定位技术综合测试试卷A.doc
- GSM网络路测信令宝典.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)