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