⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 利用 db2 udb 来使用 java cachedrowset 实现.htm

📁 Sun的高速缓存CachedRowSet方案资料档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0039)http://www.itjc.cn/html_info/176152.htm -->
<HTML><HEAD><TITLE>利用 DB2 UDB 来使用 Java CachedRowSet 实现--IT教程网-itjc.cn-最新、最全的IT资料</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META 
content=IT教程网-itjc.cn-最新、最全的IT资料,程序开发·操作系统·软件应用·图形图象·网络应用·其他整理·论文·精文荟萃·硬件维修·安全技术·关注GOOGLE·QQ专区·图库·娱乐频道 
name=description>
<META 
content=IT教程网-itjc.cn-最新、最全的IT资料,程序开发·操作系统·软件应用·图形图象·网络应用·其他整理·论文·精文荟萃·硬件维修·安全技术·关注GOOGLE·QQ专区·图库·娱乐频道 
name=keywords><LINK href="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/style.css" 
type=text/css rel=stylesheet>
<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=javascript 
src="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/top.js"></SCRIPT>

<SCRIPT language=javascript 
src="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/search.js"></SCRIPT>

<TABLE id=table1 cellSpacing=0 cellPadding=0 width=770 align=center border=0>
  <TBODY>
  <TR>
    <TD align=bottom width=658><B>您现在的位置:</B><A 
      href="http://www.itjc.cn/">IT教程网</A> &gt; <A 
      href="http://www.itjc.cn/channel.asp?id=1007">其他整理频道</A> &gt; <A 
      href="http://www.itjc.cn/class.asp?id=635">Java 
技术栏目</A></TD></TR></TBODY></TABLE>
<TABLE id=table3 cellSpacing=0 cellPadding=0 width=770 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=top width=600>
      <TABLE id=table4 cellSpacing=0 cellPadding=0 width=768 border=0>
        <TBODY>
        <TR>
          <TD>
            <DIV style="MARGIN-TOP: 5px; TEXT-ALIGN: center">
            <SCRIPT 
            src="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/wz.js"></SCRIPT>

            <P align=center></P></DIV>
            <DIV id=div_info_title>利用 DB2 UDB 来使用 Java CachedRowSet 实现</DIV>
            <DIV id=div_info_info style="COLOR: #666666; TEXT-ALIGN: center"><A 
            href="http://www.itjc.cn/">http://www.itjc.cn/</A> 2006-7-19 
            10:55:27 来源:互连网 </DIV>
            <DIV 
            style="MARGIN-TOP: 15px; MARGIN-BOTTOM: 15px; TEXT-ALIGN: center"></DIV>
            <DIV id=div_info_body><SPAN class=atitle2>断开连接</SPAN><BR>
            <TABLE cellSpacing=0 cellPadding=0 border=0>
              <TBODY>
              <TR vAlign=top align=left>
                <TD>
                  <P>级别: 初级</P></TD></TR></TBODY></TABLE>
            <P><NAME></NAME>Kulvir Singh Bhogal<BR>IBM Software Services for 
            WebSphere, IBM Corporation<BR>2004 年 8 月 </P>
            <BLOCKQUOTE>高速缓存行集(Cached Row Set)是 Java&#8482; 1.5 提供的一项新功能,源自 JSR114 
              的努力。这一新功能使您可以拥有一个可串行化的断开连接的对象。这意味着您可以连接到数据库,以结果集的形式取得数据,释放连接并在本地操纵这些数据,然后恢复连接以完成事务,这样可以大大减少对连接和服务器资源的使用。本文展示这一切是如何利用 
              DB2&reg; Universal Database&#8482; 来实现的,并包含示例代码。</BLOCKQUOTE>
            <P><SPAN 
            class=atitle2>简介</SPAN><BR>应该把数据库连接看作是一种被应用程序广泛使用的宝贵资源。尤其是在高流量的 Web 
            站点中,客户机应该使用由应用程序服务器(例如,IBM WebSphere&reg; Application 
            Server)管理的数据库连接池中的数据库连接,并在其必要的事务发生之后释放数据库连接,这一点很重要。</P>
            <P>在许多情况下,事务会话会持续较长一段时间,占用着数据库连接,直到完成。过去,Java 程序员一直使用没有高速缓存解决方案的 
            JDBC 
            API。高速缓存解决方案允许用户在本地高速缓存结果集,释放连接,操纵结果集数据,并在稍后的时间点与数据库同步。在本文中,我将介绍 
            <CODE><FONT face=新宋体>javax.sql.RowSet</FONT></CODE> 
            接口的实现,该实现允许我们实现高速缓存解决方案。 </P>
            <P><SPAN class=atitle2>获得 RowSet 实现</SPAN><BR><CODE><FONT 
            face=新宋体>javax.sql.RowSet</FONT></CODE> 接口是在 J2SE Version 1.4 中引入到 
            Java 语言的。随着 Java 2 Standard Edition version 1.5 
            的发布,我们将会看到该接口的增强和绑定到语言的接口实现。 <CODE><FONT 
            face=新宋体>RowSet</FONT></CODE> 接口是 JSR 114的结果,JSR 114 
            勾勒了一个方案,也就是“将表格数据与数据源分隔开……”,从而增加“应用程序的可扩展性和编程模型的灵活性”。我使用 beta 版本的 
            Tiger (Java 1.5) 来进行开发。如果您使用的是以前版本的 Java,应该尝试 RowSet 的参考实现,可以 从 Sun 
            Microsystems 下载参考实现。对于我们的例子,我们将利用 <CODE><FONT 
            face=新宋体>CachedRowSet</FONT></CODE> 实现。 </P>
            <P><SPAN class=atitle2>您以前看到过 RowSet 实现</SPAN><BR>本文中突出展示的 
            <CODE><FONT face=新宋体>CachedRowSetImpl</FONT></CODE> 类是 <CODE><FONT 
            face=新宋体>javax.sql.Rowset</FONT></CODE> 接口的一个实现。 <CODE><FONT 
            face=新宋体>javax.sql.Rowset</FONT></CODE> 扩展了 <CODE><FONT 
            face=新宋体>java.sql.ResultSet</FONT></CODE> 接口。因此,如果您熟悉 <CODE><FONT 
            face=新宋体>javax.sql.ResultSet</FONT></CODE> 接口,我是这样假设的,那么您会认出 
            <CODE><FONT face=新宋体>CachedRowSetImpl</FONT></CODE> 提供的许多方法。 
            <CODE><FONT face=新宋体>java.sql.RowSet</FONT></CODE> 接口提供您在标准 JDBC 2.0 
            ResultSet 
            中看到过的所有方法;附加价值是,我们不需要连续使用数据库连接。就相当于我们可以走进商店,取走商品目录之后进行挑选,然后再带着填好的订单回到商店。 
            </P>
            <P><SPAN class=atitle2>使用 CachedRowSet</SPAN><BR><CODE><FONT 
            face=新宋体>CachedRowSet</FONT></CODE> 是一个 JavaBean。您可以通过使用现有的 
            <CODE><FONT face=新宋体>ResultSet</FONT></CODE> 对象,或者通过指定连接连接信息和 SQL 
            查询,来填充 <CODE><FONT face=新宋体>CachedRowSet</FONT></CODE> 
            。我们采用后一种方法。但是,首先为我们的沙箱创建一个小的 DB2 数据库。 </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2 =&gt; create database cachedex

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>我假设在您的机器上具有一个叫做 db2admin 的用户,口令为 db2admin:</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2=&gt; connect to cachedex user db2admin using db2admin

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>创建一个名为 cachetbl 的表:</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2=&gt; create table cachetbl (id int primary key not null,

            firstname varchar(40) not null, lastname varchar(40)

            not null)

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>然后用以下行填充该表:</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            insert into cachetbl values (12345,’Kulvir’,’Bhogal’)

            insert into cachetbl values (23456,’Meet’,’Feona’)

            insert into cachetbl values (34567,’Bicky’,’Singh’)

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>我提供的示例代码建立一个到 DB2 的直接连接。如果您是通过由应用程序服务器(比如 IBM WebSphere 
            Application Server)管理的池获得数据库连接,那么可以使用 <CODE><FONT 
            face=新宋体>execute</FONT></CODE> 方法的另一种形式,该方法利用 <CODE><FONT 
            face=新宋体>java.sql.Connection </FONT></CODE>对象作为参数。通过阅读我的相关主题的文章 
            Using Data Sources the Right Way,可以更多地了解使用数据源 —— 一种 J2EE 最佳实践。 </P>
            <P><SPAN class=atitle2>可串行化</SPAN><BR><CODE><FONT 
            face=新宋体>javax.sql.RowSet</FONT></CODE> 的实现可以被串行化。对于处理 Enterprise 
            Java Beans 的程序员来说,这是一个比较好的消息。标准 JDBC 2.0 <CODE><FONT 
            face=新宋体>ResultSets</FONT></CODE> 是不可串行化的,这使得是否需要使用定制对象,以便 
            <CODE><FONT face=新宋体>ResultSet</FONT></CODE> 数据可以被发送回 EJB 
            设置中的客户机以进行操纵或查询,成了一个争论。有了 <CODE><FONT face=新宋体>RowSet</FONT></CODE> 
            实现的出现,我们就可以串行化 <CODE><FONT face=新宋体>ResultSets</FONT></CODE> 
            ,将它们发送到我们的客户机,然后我们的客户机可以读取和更新 <CODE><FONT 
            face=新宋体>ResultSet</FONT></CODE> ,并将它发送回服务器。 </P>
            <P><SPAN class=atitle2>可滚动</SPAN><BR><CODE><FONT 
            face=新宋体>CachedRowSetImpl</FONT></CODE> 实现是可滚动的,所以允许您在 <CODE><FONT 
            face=新宋体>RowSet</FONT></CODE> 给出的记录集中向前和向后滚动。这在 JDBC 2.0 <CODE><FONT 
            face=新宋体>ResultSet</FONT></CODE> 
            中是允许的。但是以前,在滚动发生期间必须维护一个会话。现在,我们可以在离线数据中滚动了。 </P>
            <P><SPAN class=atitle2>作一个数据完整性的乐天派</SPAN><BR>您可能会想,如果在客户机 A 
            将更改与数据库服务器进行同步之前,客户机 A 上缓存的数据被另一个客户机(客户机 B)操纵,那将会发生什么事情。 <CODE><FONT 
            face=新宋体>CachedRowSet</FONT></CODE> 
            的默认实现不对数据库服务器维护锁。参考实现使用乐观的同步。具体地说就是,如果客户机 A 
            试图操纵的数据在数据库服务器上没有更改,那么更新将会被数据库接受。但是,如果在次期间目标数据被更改,就会抛出一个同步异常。注意,这种乐观方法也是参考实现处理并发性的方式。其他实现可能采取不同的并发策略;规范并不强制要求使用某个特定的并发模型。 
            </P>
            <P><SPAN class=atitle2>查看起作用的东西</SPAN><BR>我提供了一个 示例程序,该程序演示了 
            <CODE><FONT face=新宋体>CachedRowSetImpl</FONT></CODE> 
            提供的一些功能。这些代码都可以在文件 <CODE><FONT 
            face=新宋体>DisconnectedExample.java</FONT></CODE> 
            中找到。我将解释该程序的一些部分,以便您可以理解我想要传达的内容。注意,要运行示例应用程序,需要在运行时类路径中包含 DB2 
            Universal JDBC 驱动程序 (db2jcc.jar)。还需要包含 db2jcc_license_cu.jar 
            文件。关于设置环境的更多信息,请参考我的文章: Hooking Up with DB2 Universal Database 
            Version 8 using Java。 </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            Class.forName("com.ibm.db2.jcc.DB2Driver");

            CachedRowSet crs = new CachedRowSetImpl();

            crs.setUsername("db2admin");

            crs.setPassword("db2admin");

            crs.setUrl("jdbc:db2://localhost:50000/cachedex");

            crs.setCommand("SELECT id,firstname,lastname from cachetbl");

            crs.execute();

            System.out.println("---------------------------");

            // display size of cached row set

            System.out.println("Size: " + crs.size() + " records");

            // display records in cachedrowset

            while (crs.next())

            {

            System.out.println(crs.getRow() + " - " +

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -