服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jdbc2.0扩展api(4)


  在一个连接参与了分布式事务的时候,下面的代码是你不能做的(con表示支持分布式事务的连接connection)。
  con.commit();或者con.rollback();或者con.setautocommit(true);对于通常的connection来说,缺省的是auto-commit模式。而对于支持分布式事务的connection来说,缺省不是auto-commit模式。注意,即使connection是支持事务的,它也可以用于没有事务的情况。关于事务边界的限制只是是对分布式事务的情况下才成立的。
  配置支持连接池的datasource的时候,涉及到配置connectionpooldatasource对象,这个对象是三层体系结构中的中间层来管理连接池的。同样的,在配置支持分布式事务的时候,需要配置xadatasource,xadatasource是中间层用来管理分布式事物的对象。connectionpooldatasource和xadatasource是由驱动提供商提供的,对应用程序的设计者来说是透明的。和基本的datasource一样,系统管理员来配置connectionpooldatasource和xadatasource对象。
  四、结果集:
  结果集对象是一行行数据的容器。根据其目的,可以通过多种方法实现。rowset及其相关的接口与jdbc2.0的标准扩展api有点不同,他们并不是驱动的一部分,rowset是在驱动的上层实现的,可以由其它的任何人来实现他们。
  任何类型的rowset都实现了rowset接口,rowset接口扩展了resultset接口。这样rowset对象就有了resultset对象所有的功能。能够通过getxxx方法得到数据库中的某列值,通过updatexxx方法可以修改某列值,可以移动光标,是当前行变为另一行。
  当然,我们更感兴趣的是rowset接口提供的新的功能。作为一个javabean组件,rowset对象可以增加或者删除一个listener(监听者),可以get或者set其属性值,这些属性中,有一个是字符串,表示一个对数据库query请求,rowset接口定义了设定参数的方法,也提供了执行这个请求的方法。这意味着rowset对象能够执行查询请求,可以根据它产生的结果集进行计算。同样,rowset也可以根据任何表格数据源进行计算,所以,它不局限于关系数据库。
  从数据源得到数据之后,rowset对象可以和数据源断开连接,rowset也可以被序列化。这样,rowset就可以通过网络传递给瘦客户端。
  rowset可以被重新连接到数据源,这样,做的修改就可以存回到数据源中去。如果产生了一个listener,当rowset的当前行移动,或者数据被修改的时候,监听者就会收到通知。例如,图形用户界面组件可以注册成为监听者,当rowset更改的时候,图形用户界面接到通知,就可以修改界面,来符合它所表示的rowset。
  根据不同的需要,rowset接口可以通过多种方法来实现。java software已经写了一个cachedrowset实现,从http://developer.java.sun.com/developer/earlyaccess/crs/index.html中可以得到这个实现。
  与cachedrowset类不样的是,jdbcrowset类总是保持一个和数据源的连接。这样,在resultset外围简单到加了一层,是基于jdbc技术的驱动看起来象是一个简单的javabean组件一样。

  总结:jdbc2.0标准扩展api通过见datasource注册到jndi名字服务上,将jdbc技术扩展为一个全新的概念。使应用程序的代码更加精巧,易于控制。新的api支持了连接池,支持分布式的事务。最后,还使java应用程序可以在网络上传播结果集,是不可以滚动的resultset变成了可以滚动的rowset。

扫描关注微信公众号