posts - 39,  comments - 263,  trackbacks - 0

转载请注明出处:http://www.blogjava.net/nake/
   自从
java 发布的第一个版本开始就已经包含 JDBC 了。目前已经有 10 个年头了。 JDBC4.0 将要被打包到 java6.0 里( java SE 是 J2SE 新的名字)。它展现设计的重大提升和提供更加丰富的 API ,更加重视简易开发和提高生产力 。

       本文将讨论一些 JDBC 在改善设计和提高性能上的重要的变化。但是不能列举每一个变化。

注解和泛型

我想你已经了解了包含在 JAVA 5.0 的注解( annotations ) 和泛型( generic 也有翻译范型)。 JDBC4.0 也引进了注解和泛型 DataSet ,这使得执行 sql 语句和 SQL  DML ( data manipulation  language ) 定义变的简单。

       在新的 API 里定义了一套 Query 和 DataSet 接口。 Query 接口定义了一套方法,这些方法描述了 SQL 的 select 和 update 语句。而且详细介绍了结果集如何绑定为一个 DataSet 的。因为泛型所以 DataSet 是可以带参数的。因此可以说 DataSet 接口是类型安全的( type-saft ) .

所有 Query 接口都要从 BaseQuery 接口继承。可以通过 Connection.createQueryObject() 或者 DataSource.createQueryObject() 得到Query对象。

一个DataSet接口都继承java.util.List。   DataSet 是有列概念的数据集,能从 Query 接口得到,并且可以带有参数。 DataSet 可以在连接和断开连接的情况下使用。从而 DataSet 实现了 ResultSet (连接) 或者   CachedRowSet (可以断开连接)。因为DataSet是java.util.List的子接口,所以可以通过java.util.Iterator来访问每一行。

DataSet 接口可以带系统或者用户自己定义的类作为参数。通过两种方法你可以实现:构造函数或者 JavaBeans 对象,任何一个办法都能达到将用户自定义的类绑定到结果集的列里。但是在其它支持 JavaBeans 的框架里,用 JavaBeans 对象的实现就显更加容易使用。

下面简单举例说明如何通过新的 API 创建和运行 SQL 查询。用用户自定义的类来定义结果集。(拷贝时候小心有制表符)

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;
   }

   pubic String lastName() {
      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 ();

 

异常处理的增强:

1.       为 SQLException 分为两类 transient 和 non-transient 。

2.       支持连锁的异常。

3.       继承了 Iterable 接口。

因为继承了Iterable 所以你可以这样写:

catch(SQLException ex) {
   for(Throwable t : ex) {
      System.out.println("exception:" + t);
   }
}

SQLExceptions.JPG
参考

  • http://www.javaworld.com/javaworld/jw-05-2006/jw-0501-jdbc.html
  • JSR 221: JDBC 4.0 Specification:
  • http://www.jcp.org/en/jsr/detail?id=221
    未完

    posted on 2006-05-11 22:26 nake 阅读(6800) 评论(4)  编辑  收藏

    FeedBack:
    # re: JDBC4.0 简介
    2006-05-12 08:21 | dennis
    看起来蛮酷的,感觉怎么跟hibernate的Query很像.


      回复  更多评论
      
    # re: JDBC4.0 简介
    2006-05-12 11:41 | Nelson
    jdk绑的东西越来越多了  回复  更多评论
      
    # re: JDBC4.0 简介
    2006-05-13 13:54 | 牛
    好东西,期待。  回复  更多评论
      
    # re: JDBC4.0 简介[未登录]
    2010-09-28 13:14 | 天行者
    很详细,很全面。感谢分享。收藏了~  回复  更多评论
      

    只有注册用户登录后才能发表评论。


    网站导航:
     
    <2006年5月>
    日一二三四五六
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用链接

    留言簿(18)

    我参与的团队

    随笔档案(39)

    收藏夹(1)

    搜索

    •  

    积分与排名

    • 积分 - 453278
    • 排名 - 123

    最新评论

    阅读排行榜

    评论排行榜