网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java类基础.
.J2SE 6 在国际化方面的增强.
.JGraph分析.
.Struts 中 实现查询结果分页显示.
.教您如何成为 EJB 专家详解系列连.
.JSTL入门(1):表达式语言.
.理解Java Swing中的Accelerator .
.Java中的异常处理从概念到实例.
.“面向切面(AOP)”与“面向对象(.
.Java 技术在嵌入式系统中的应用详.
.Java中的17种常用正则表达式归纳.
.再谈通过Java执行POST操作.
.深入J2ME配置层.
.使用JAXB处理XML文档??先睹为快.
.用java实现RSA算法.
.两种最流行的开源CORBA实现.
.Java高级编程——泛型类型 第二部.
.Spring Framework中的面向方面编.
.Jakarta Struts学习之应用实践.
.Struts安装配置.

探讨JDBC 4.0在设计和性能方面的改进

发表日期:2008-1-5


摘要 JDBC(Java数据库连接)4.0预计在2006年中期作为Java 6.0标准版的一部分正式发行。现在,我们大家都关心的问题是,如何利用这一新的规范来改进Java应用程序数据存取和交互方面的设计与性能。本文将与你一起探讨JDBC 4.0中引入的新特征,讨论它对一些现有问题的解决方案,并且通过具体示例展示它在设计和性能方面的改进。

  自从核心Java语言的第一个公开发行版本起,JDBC(Java数据库连接)已经经历了十年的发展历程。它的当前版本4.0(将与Java标准版本6.0一起打包发行)提供了一组更为丰富的API,主要目的在于改进软件开发的设计和性能。

  本文将重点讨论JDBC 4.0规范在设计和性能方面的改进。

  一、 注释和泛型DataSet

  在本文中,我假定你已经了解注释和泛型。其实,这两个概念是随着J2SE 5.0的发行一同引入的;与此同时,JDBC 4.0中引入了注释和泛型DataSet。这一变化的主要目的是为了简化SQL查询和SQL DML(数据操纵语言)语句的执行。

  新一代API定义了一组Query和DataSet接口。这个Query接口定义了一组带有JDBC注释的方法。这些带有注释的方法描述了SQL select和update语句,并且指定应该如何把结果绑定到一个DataSet上。这个DataSet接口是一个通过泛型定义实现的参数化类型,也为结果集数据提供一种类型安全的定义。

  所有的Query接口都继续自BaseQuery接口。你可以使用Connection.createQueryObject()或DataSource.createQueryObject()方法(这两个方法都使用一个Query接口类型作为它的参数)来具体实现这样的接口。

  一个DataSet接口继续自java.util.List;该接口使用一个描述结果集数据列的数据库(该数据库是通过Query接口的一个注释的方法返回的)作为它的参数类型。在连接方式和非连接方式下都可以操作和使用DataSet。因此,根据使用的是连接方式还是非连接方式,这个DataSet也分别相应地实现为一个ResultSet或CachedRowSet。DataSet,作为java.util.List的一个子接口,答应使用Iterator模式通过java.util.Iterator接口存取其数据行。

  你可以用两种方式来指定数据类或用户定义类(作为DataSet接口的一个参数类型)-作为一个结构或作为一个JavaBeans对象。无论哪一种方式都能够把结果集数据列绑定到用户定义的类定义上;但是,JavaBeans组件模型更漂亮些,并且更利于对象定义在另外的支持JavaBeans模型的框架中的重用。

  列表1摘自本文示例中的代码片断,它展示了如何使用这种新型的API来创建和运行SQL查询:使用一个用户定义类定义结果集数据,并且把返回的结果集绑定到用户定义的描述中。

  列表1.Employee用户定义类型与employeeQueries接口

pubic class Employee {
 private int employeeId;
 private String firstName;
 private String lastName;
 public int getEmployeeId() {
  return employeeId;
 }
 public setEmployeeId(int employeeId) {
  this.employeeId = employeeId;
 }
 public String getFirstName() {
  return firstName;
 }
 public setFirstName(String firstName) {
  this.firstName = firstName;
 }
 public String getLastName() {
  return lastName;
 }
 public setLastName(String lastName) {
  this.lastName = lastName;
 }
}
interface EmployeeQueries extends BaseQuery {
 @Select (sql="SELECT employeeId, firstName, lastName FROM employee")
 DataSet<Employee> getAllEmployees ();
 @Update (sql="delete from employee")
 int deleteAllEmployees ();
}
Connection con = ...
EmployeeQueries empQueries = con.createQueryObject (EmployeeQueries.class);
DataSet<Employee> empData = empQueries.getAllEmployees ();
  二、 改进异常处理能力

  在JDBC API 4.0以前的版本中,异常处理功能极其有限。对于所有类型的错误都会笼统地抛出一个SQLException异常-根本不存在异常的具体分类,且没有相应的层次定义。所以这时,你唯一能够得到一些有意义的信息的办法是检索和分析SQLState值。另一方面,SQLState值及其相应的含义会因不同的数据源而有所改变;因此,要想追踪到问题的"根部"并且有效地处理异常是一件非常乏味的任务。

  JDBC 4.0改进了异常处理能力,同时也缓解了一些前面提到的问题。其中的要害改进有:

  · 把SQLException分成短暂异常和非短暂异常两种类型

  · 支持链式异常

  · 实现Iterable接口

  当一个以前失败的操作检索成功时,将会抛出SQLTransientException异常;而在检索不成功时将会抛出SQLNonTransientException异常-除非导致SQLException的原因得到纠正。

  图1展示了子类SQLTransientException和SQLNonTransientException。


上一篇:Hibernate程序性能优化的考虑要点 人气:1293
下一篇:Hibernate对多表关联查询 人气:601
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐