转载请注明出处: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);
				
						
				
				   }
				
						
				
				}
				
						
								
								 
								
								
										参考
										
								
						
				
		
		
				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 阅读(6781) 
评论(4)  编辑  收藏