5.3 在Spring里使用JDBC
存留技术有很多种,Hibernate、iBATIS和JPA只是其中的几种而已。尽管如此,很多程序还在以古老的方式把Java对象写入到数据库。“try并返回true”的方法很适合老式JDBC。
这有什么不好吗?JDBC不要求我们掌握其他框架的查询语言,它是基于SQL这种数据访问语言的。另外,在使用JDBC时,可以更细致地调整数据访问的性能。JDBC还允许我们利用数据库的特有功能,而其他框架可能不鼓励甚至禁止使用它们。
再者,JDBC可以让我们在比存留框架低得多的层次上处理数据,能够访问和操作数据库里单独的字段。这种细致访问方法在有些程序里是很方便的,比如报告程序,如果把数据包装为类,而稍后惟一要做的只是把它解包为原始的数据,那就没有太大的意义了。
JDBC也不是十全十美的。它具有强大的功能、灵活性和其他一些优点,但也有缺点。
5.3.1 处理失控的JDBC代码
JDBC为我们提供了一个API来处理数据库,我们要负责处理与数据库访问相关的一切事宜,其中包括管理数据库资源和处理异常。
对于曾经利用JDBC把数据插入到数据库的程序员来说,清单5.1的代码应该并不陌生。
程序清单5.1 利用JDBC在数据库里插入一行
|
失控的代码!这二十多行代码就是向数据库插入一个简单的对象。对于JDBC操作来说,简单是其特点,但为什么要用这么多行代码才能做如此简单的事情呢?实际上不是这样的,只有几行是真正完成插入操作的。但是JDBC要求我们正确地管理连接和语句,还要处理可能抛出的SQLException。
再来看一看程序清单5.2,它使用传统的JDBC来更新数据库里motorist表的一行。
程序清单5.2 使用JDBC在数据库里更新一行
|
粗看之下,清单5.2与5.1似乎是相同的。而实际上,除了SQL字符串和创建这个语句的那一行,这两段代码是完全相同的。同样的,这里也使用了大量代码来完成一件很简单的事情,而且有很多重复的代码。在理想情况下,我们只需要编写与特定任务相关的代码,这些才是清单5.2与5.1之间的不同之处,其他都是不变的“套话”。
为了完成对于传统JDBC的介绍,我们再来看一看如何从数据库获取数据。从程序清单5.3可以看出,这些代码也不简单。
程序清单5.3 使用JDBC从数据库查询一行
|
这段代码与前面的插入和更新范例一样冗长,甚至是更复杂。这似乎印证了Pareto法则 :只有20%代码是查询操作所必需的,而80%代码是样板代码。
现在可以看出,大部分JDBC代码是用于创建连接和语句、进行异常处理的样板代码。把这个情况说明之后,我们就不会再展示这种劣质代码了。
但实际上这些样板代码是很重要的。清理资源和处理错误提高了数据访问的健壮性,没有这些操作,就不能发现错误,就会让资源处于打开状态,从而导致意外的代码和资源泄漏。正是因为这些原因,我们才让框架来处理这些样板代码,从而确保这些代码是存在的,而且是正确的。
| 回书目 上一节 下一节 |
|
||||
| · 浏览器的战国时代 · CCNA认证考试Pass必备 · 无线网络环境 · 无线路由器故障处理 · 解析35岁技术人的价值.. · 无线重中之重:安全问题 · 无线局域网基本知识 · 家庭无线局域网 |
· 华为七千人主动辞职规.. · 微软出价446亿美元收购.. · 虚拟化的“赤壁之战” · 802.11n:下一代的无线.. · 脉冲无线电uwb专题 · AIX操作系统管理应用 · 云计算时代来临 · 求职必杀技 决战面试官 |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · 无线网状网(MESH) · Windows远程桌面应用 · C#技术开发指南 |
· Apache技术专题 · Windows集群服务应用 · C#技术开发指南 · 文档格式标准开战 OOXM.. · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 解析35岁技术人的价值.. |
|||