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 (可以断开连接)。因为DataSetjava.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 阅读(6733) 评论(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)

    搜索

    •  

    积分与排名

    • 积分 - 450447
    • 排名 - 117

    最新评论

    阅读排行榜

    评论排行榜