JDBC4 简介

系统 2246 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);  
   }  
}

 

 

最后,注:hibernate 3.5已经添加了对JDBC4的支持

JDBC4 简介


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论