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

📄 java数据对象(jdo)的应用.htm

📁 详细地讨论Sun公司的Java数据对象(JDO)标准。JDO允许我们使用Java对象
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.javaeasy.com/ArticleShow.asp?ArticleID=326 -->
<HTML><HEAD><TITLE>Java数据对象(JDO)的应用</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="Java数据对象(JDO)的应用.files/default.css" type=text/css rel=stylesheet>
<META 
content="java;java程序员;编程;程序员; java文档; java编程; java应用; java数据库; java源码; java开发; swing; JDK; java技术; J2EE; JSP; JavaScript; EJB; XML; 数据库; 软件开发; java网络技术; 陈光明; java资料; " 
name=KEYWORDS>
<META content="MSHTML 6.00.2800.1491" name=GENERATOR></HEAD>
<BODY bgColor=#660033 leftMargin=0 topMargin=0 marginwidth="0" 
marginheight="0"><LINK href="Java数据对象(JDO)的应用.files/default.css" type=text/css 
rel=stylesheet>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR vAlign=top>
    <TD vAlign=top width="100%" height=86>
      <TABLE cellSpacing=0 cellPadding=0 width="99%" align=center 
      bgColor=#ffffff border=0>
        <TBODY>
        <TR>
          <TD vAlign=top width="38%"><IMG height=86 
            src="Java数据对象(JDO)的应用.files/ci.jpg" width=279 border=0></TD>
          <TD vAlign=center width="62%">
            <DIV align=center>
            <OBJECT 
            codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 
            height=60 width=480 
            classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="movie" VALUE="images/bannerswf.swf"><PARAM NAME="quality" VALUE="high">
                                                                  <embed 
            src="images/bannerswf.swf" width="480" height="60" quality="high" 
            pluginspage="http://www.macromedia.com/go/getflashplayer" 
            type="application/x-shockwave-flash"></embed></OBJECT></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=top align=middle colSpan=5 height=301>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center 
      bgColor=#ffffff border=0>
        <TBODY>
        <TR>
          <TD>&nbsp;</TD>
          <TD class=class-name width="100%" height=30><A 
            href="http://www.javaeasy.com/index.asp">首页</A>&gt;&gt;<A 
            href="http://www.javaeasy.com/artclelist.asp">文档中心</A>&gt;&gt;&nbsp;<A 
            href="http://www.javaeasy.com/artclelist2.asp?BigClassName=数据库">数据库&nbsp;</A>&gt;&gt;&nbsp;<A 
            href="http://www.javaeasy.com/artclelist2.asp?BigClassName=数据库&amp;SmallClassName=JDO">JDO&nbsp;</A>&gt;&gt;&nbsp; 
          </TD>
          <TD></TD></TR>
        <TR>
          <TD width=5></TD>
          <TD vAlign=top>
            <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#ffffff 
            border=0>
              <TBODY>
              <TR>
                <TD bgColor=#cccccc height=1><IMG height=1 
                  src="Java数据对象(JDO)的应用.files/blank.gif" width=1></TD></TR>
              <TR>
                <TD bgColor=#f6f6f6 height=89>
                  <P align=center><FONT face="黑体,Arial, Helvetica, sans-serif" 
                  color=#000000 
                  size=4><STRONG><BR>Java数据对象(JDO)的应用</STRONG></FONT><FONT 
                  color=gray size=1>阅读次数1454</FONT> </P>
                  <P 
                  align=right>作者:刘彦青&nbsp;&nbsp;&nbsp;&nbsp;出处:不详&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </P></TD></TR></TBODY></TABLE>
            <P>在本篇文章中,我们将详细地讨论Sun公司的Java数据对象(JDO)标准。JDO允许我们使用Java对象,支持事务和多用户。与ODBC不同的是,它使我们无需考虑SQL和与数据库有关的其他东西。它与串行化也有所区别,因为它支持多个用户和事务。JDO允许Java开发人员将他们的数据模型用作数据模型,无需在“数据端”、“对象端”之间的转移方面花费大量的时间。&nbsp;<BR>包括CocoBase、WebGain&nbsp;TOPLink和Castor&nbsp;JDO在内的多种产品都可以实现了JDO标准。既然有一种标准的方法,我们就可以只学习其中的一种,就象有了ODBC,我们就可以使用任何提供了驱动程序的数据库那样。&nbsp;<BR>在本篇文章中,我们将使用Prism技术公司的OpenFusion&nbsp;JDO。读者在后面会发现,只有很小一部分代码使用了PrismTech&nbsp;API,其他部分都使用了标准的JDO标准。&nbsp;<BR>创建Person对象&nbsp;<BR>我们将首先创建一个Person对象,该对象遵循了JavaBean的惯例,可以对其属性执行get和set操作。需要注意的是,尽管我们是在创建这个类,但它并没有什么特别的,它没有继承或实现任何基本类。对一个可保持类的要求是:&nbsp;<BR>1、所有域必须能够被JDO类访问(public或set*方法)&nbsp;<BR>2、域的数据类型必须符合JDO规格。&nbsp;<BR>3、不能支持一些类型的字段(例如Thread、File、Socket等不能串行化的字段)。&nbsp;<BR>下面是符合上述要求的Person.java:&nbsp;<BR><BR>public&nbsp;class&nbsp;Person&nbsp;{&nbsp;<BR>private&nbsp;String&nbsp;name;&nbsp;<BR>private&nbsp;String&nbsp;address;&nbsp;<BR>private&nbsp;String&nbsp;ssn;&nbsp;<BR>private&nbsp;String&nbsp;email;&nbsp;<BR>private&nbsp;String&nbsp;homePhone;&nbsp;<BR>private&nbsp;String&nbsp;workPhone;&nbsp;<BR><BR>//&nbsp;允许我们使用构造器创建Person对象&nbsp;<BR>public&nbsp;Person(String&nbsp;name,&nbsp;String&nbsp;address,&nbsp;String&nbsp;ssn,&nbsp;<BR>String&nbsp;email,&nbsp;String&nbsp;homePhone,&nbsp;String&nbsp;workPhone)&nbsp;{&nbsp;<BR>this.name&nbsp;=&nbsp;name;&nbsp;<BR>this.address&nbsp;=&nbsp;address;&nbsp;<BR>this.ssn&nbsp;=&nbsp;ssn;&nbsp;<BR>this.email&nbsp;=&nbsp;email;&nbsp;<BR>this.homePhone&nbsp;=&nbsp;homePhone;&nbsp;<BR>this.workPhone&nbsp;=&nbsp;workPhone;&nbsp;<BR>}&nbsp;<BR><BR><BR>//&nbsp;方法&nbsp;<BR>public&nbsp;String&nbsp;getName()&nbsp;{&nbsp;return&nbsp;name;&nbsp;}&nbsp;<BR><BR>public&nbsp;String&nbsp;getAddress()&nbsp;{&nbsp;return&nbsp;address;&nbsp;}&nbsp;<BR><BR>public&nbsp;String&nbsp;getSsn()&nbsp;{&nbsp;return&nbsp;ssn;&nbsp;}&nbsp;<BR><BR>public&nbsp;String&nbsp;getEmail()&nbsp;{&nbsp;return&nbsp;email;&nbsp;}&nbsp;<BR><BR>public&nbsp;String&nbsp;getHomePhone()&nbsp;{&nbsp;return&nbsp;homePhone;&nbsp;}&nbsp;<BR><BR>public&nbsp;String&nbsp;getWorkPhone()&nbsp;{&nbsp;return&nbsp;workPhone;&nbsp;}&nbsp;<BR><BR>public&nbsp;void&nbsp;setName(String&nbsp;name)&nbsp;{&nbsp;this.name&nbsp;=&nbsp;name;&nbsp;}&nbsp;<BR><BR>public&nbsp;void&nbsp;setAddress(String&nbsp;address)&nbsp;{&nbsp;<BR>this.address&nbsp;=&nbsp;address;&nbsp;<BR>}&nbsp;<BR><BR>public&nbsp;void&nbsp;setSsn(String&nbsp;ssn)&nbsp;{&nbsp;this.ssn&nbsp;=&nbsp;ssn;&nbsp;}&nbsp;<BR><BR>public&nbsp;void&nbsp;setEmail(String&nbsp;email)&nbsp;{&nbsp;this.email&nbsp;=&nbsp;email;&nbsp;}&nbsp;<BR><BR>public&nbsp;void&nbsp;setHomePhone(String&nbsp;homePhone)&nbsp;{&nbsp;<BR>this.homePhone&nbsp;=&nbsp;homePhone;&nbsp;<BR>}&nbsp;<BR>public&nbsp;void&nbsp;setWorkPhone(String&nbsp;workPhone)&nbsp;{&nbsp;<BR>this.workPhone&nbsp;=&nbsp;workPhone;&nbsp;<BR>}&nbsp;<BR>}&nbsp;<BR>创建PersonPersist对象管理可保持性&nbsp;<BR>现在已经有了Person对象,我们需要创建一些代码来管理这种可保持性。下面我们将详细讨论这些代码,并学习如何:&nbsp;<BR>1、初始化JDO可保持性管理器。&nbsp;<BR>2、向数据库中输入三个人的资料。&nbsp;<BR>3、从数据库中显示人的资料。&nbsp;<BR>4、修改其中一个人的名字。&nbsp;<BR>5、从数据库中删除一个人的资料。&nbsp;<BR>6、在main()方法中进行相关的处理。&nbsp;<BR>第一步:初始化JDO可保持性管理器&nbsp;<BR>我们从OpenFusion实现中导入了标准的JDO类和ManagedConnectionFactory,当然了我们也可以将它们抽象成一个独立的类。构造器使用javax.jdo.PersistenceManagerFactoryClass属性设置连接代理,这一点与在JDBC中设置数据库驱动程序的属性很相似。&nbsp;<BR>package&nbsp;addressbook;&nbsp;<BR><BR>import&nbsp;java.util.*;&nbsp;<BR>import&nbsp;javax.jdo.*;&nbsp;<BR><BR>import&nbsp;<BR>com.prismt.j2ee.connector.jdbc.ManagedConnectionFactoryImpl;&nbsp;<BR><BR>public&nbsp;class&nbsp;PersonPersist&nbsp;<BR>{&nbsp;<BR>private&nbsp;final&nbsp;static&nbsp;int&nbsp;SIZE&nbsp;=&nbsp;3;&nbsp;<BR>private&nbsp;PersistenceManagerFactory&nbsp;pmf&nbsp;=&nbsp;null;&nbsp;<BR>private&nbsp;PersistenceManager&nbsp;pm&nbsp;=&nbsp;null;&nbsp;<BR>private&nbsp;Transaction&nbsp;transaction&nbsp;=&nbsp;null;&nbsp;<BR><BR>//&nbsp;需要保持的人的数组&nbsp;<BR>private&nbsp;Person[]&nbsp;people;&nbsp;<BR>//&nbsp;现有对象标识符的向量&nbsp;<BR>private&nbsp;Vector&nbsp;id&nbsp;=&nbsp;new&nbsp;Vector(SIZE);&nbsp;<BR><BR>public&nbsp;PersonPersist()&nbsp;{&nbsp;<BR>try&nbsp;{&nbsp;<BR>Properties&nbsp;props&nbsp;=&nbsp;new&nbsp;Properties();&nbsp;<BR><BR>props.setProperty("javax.jdo.PersistenceManagerFactoryClass",&nbsp;<BR>"com.prismt.j2ee.jdo.PersistenceManagerFactoryImpl");&nbsp;<BR>pmf&nbsp;=&nbsp;JDOHelper.getPersistenceManagerFactory(props);&nbsp;<BR>pmf.setConnectionFactory(&nbsp;createConnectionFactory()&nbsp;);&nbsp;<BR>}&nbsp;catch(Exception&nbsp;ex)&nbsp;{&nbsp;<BR>ex.printStackTrace();&nbsp;<BR>System.exit(1);&nbsp;<BR>}&nbsp;<BR>}&nbsp;<BR>连接代理是在名字为createConnectionFactory()的静态方法中创建的,该代理需要JDBC&nbsp;URL、JDBC驱动程序、用户名和口令。&nbsp;<BR>public&nbsp;static&nbsp;Object&nbsp;createConnectionFactory()&nbsp;{&nbsp;<BR>ManagedConnectionFactoryImpl&nbsp;mcfi&nbsp;=&nbsp;new&nbsp;<BR>ManagedConnectionFactoryImpl();&nbsp;<BR>Object&nbsp;connectionFactory&nbsp;=&nbsp;null;&nbsp;<BR><BR>try&nbsp;{&nbsp;<BR>mcfi.setUserName("scott");&nbsp;<BR>mcfi.setPassword("tiger");&nbsp;<BR>mcfi.setConnectionURL(&nbsp;<BR>"jdbc:oracle:thin:@localhost:1521:thedb");&nbsp;<BR><BR>mcfi.setDBDriver("oracle.jdbc.driver.OracleDriver");&nbsp;<BR><BR>connectionFactory&nbsp;=&nbsp;mcfi.createConnectionFactory();&nbsp;<BR>}&nbsp;catch(Exception&nbsp;e)&nbsp;{&nbsp;<BR>e.printStackTrace();&nbsp;<BR>System.exit(1);&nbsp;<BR>}&nbsp;<BR>return&nbsp;connectionFactory;&nbsp;<BR>}&nbsp;<BR><BR><BR>第二步:在数据库中输入三个人的资料&nbsp;<BR><BR>PersistPeople()使用Person.java文件中的构造器创建了3个人的资料。。我们要作的第一件事是通过&nbsp;<BR>getPersistenceManager()获得一个可保持性管理器,然后创建一个执行我们的任务的事务。为了保持这一对象结构图,我们简单地调用makePersistentAll(&nbsp;Object[]&nbsp;)方法即可。代码底部的for()循环获得每个保持对象的唯一的ID,并保存起来供以后使用。&nbsp;<BR>public&nbsp;void&nbsp;persistPeople()&nbsp;{&nbsp;<BR>//&nbsp;创建人的资料的数组&nbsp;<BR>people&nbsp;=&nbsp;new&nbsp;Person[SIZE];&nbsp;<BR><BR>//&nbsp;创建3个人的资料&nbsp;<BR>people[0]&nbsp;=&nbsp;new&nbsp;Person("Gary&nbsp;Segal",&nbsp;"123&nbsp;Foobar&nbsp;Lane",&nbsp;<BR>"123-123-1234",&nbsp;"gary@segal.com",&nbsp;<BR>"(608)&nbsp;294-0192",&nbsp;"(608)&nbsp;029-4059");&nbsp;<BR>people[1]&nbsp;=&nbsp;new&nbsp;Person("Michael&nbsp;Owen",&nbsp;<BR>"222&nbsp;Bazza&nbsp;Lane,&nbsp;Liverpool,&nbsp;MN",&nbsp;<BR>"111-222-3333",&nbsp;"michael@owen.com",&nbsp;<BR>"(720)&nbsp;111-2222",&nbsp;"(303)&nbsp;222-3333");&nbsp;<BR>people[2]&nbsp;=&nbsp;new&nbsp;Person("Roy&nbsp;Keane",&nbsp;<BR>"222&nbsp;Trafford&nbsp;Ave,&nbsp;Manchester,&nbsp;MN",&nbsp;<BR>"234-235-3830",&nbsp;"roy@keane.com",&nbsp;<BR>"(720)&nbsp;940-9049",&nbsp;"(303)&nbsp;309-7599)");&nbsp;<BR><BR>//&nbsp;保持这3个人的资料&nbsp;<BR>pm&nbsp;=&nbsp;pmf.getPersistenceManager();&nbsp;<BR>transaction&nbsp;=&nbsp;pm.currentTransaction();&nbsp;<BR>pm.makePersistentAll(people);&nbsp;<BR>transaction.commit();&nbsp;<BR><BR>//&nbsp;获取被保持对象的对象ID&nbsp;<BR>for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;people.length;&nbsp;i++)&nbsp;{&nbsp;<BR>id.add(pm.getObjectId(people[i]));&nbsp;<BR>}&nbsp;<BR><BR>//&nbsp;关闭现有的保持性管理器,保证对象是从数据库而不是从保持性管理器的缓存中读取的&nbsp;<BR>pm.close();&nbsp;<BR>}&nbsp;<BR>下面是一些可以针对保持性管理器的其他方法:&nbsp;<BR>使实例成为可保持的:获得一个临时对象,并保持它。&nbsp;<BR>删除可保持实例:从数据存储库中删除信息。&nbsp;<BR>使实例临时化:使实例与可保持性管理器分离,而不删除在数据存储库中的信息。&nbsp;<BR>使实例处于保持状态&nbsp;删除保持的实例&nbsp;使实例处于临时状态&nbsp;<BR>makePersistent(Object&nbsp;o)&nbsp;deletePersistent(Object&nbsp;o)&nbsp;makeTransient(Object&nbsp;o)&nbsp;<BR>makePersistentAll(Object[]&nbsp;os)&nbsp;deletePersistentAll(Object[]&nbsp;os)&nbsp;makeTransientAll(Object[]&nbsp;os)&nbsp;<BR>makePersistentAll(Collection&nbsp;os)&nbsp;deletePersistentAll(Collection&nbsp;os)&nbsp;makeTransientAll(Collection&nbsp;os)&nbsp;<BR>(这里是一个4X3的表格,可以参阅原稿中的英文表格)&nbsp;<BR><BR>第三步:显示数据库中人的信息&nbsp;<BR>显示信息代码以获得可保持性管理器开始。我们使用上面代码中用persistPeople()方法保存的对象ID获得对象,调用对象的方法━━在本例中是gets,来得到我们输入的信息。我们可以发现,要保持我们的对象,并不需要编写大量的代码。&nbsp;<BR>public&nbsp;void&nbsp;display(int&nbsp;end)&nbsp;{&nbsp;<BR>Person&nbsp;person;&nbsp;<BR>int&nbsp;max&nbsp;=&nbsp;end&nbsp;&lt;=&nbsp;SIZE&nbsp;?&nbsp;end&nbsp;:&nbsp;SIZE;&nbsp;<BR><BR>//&nbsp;获得一个新的可保持性管理器&nbsp;<BR>pm&nbsp;=&nbsp;pmf.getPersistenceManager();&nbsp;<BR>//&nbsp;从数据库中获取对象并进行显示&nbsp;<BR>for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;max;&nbsp;i++)&nbsp;{&nbsp;<BR< 
            p>
            <P align=center><B><FONT color=red>[1]</FONT>&nbsp;<A 
            href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=326&amp;ArticlePage=2">[2]</A>&nbsp;&nbsp;<A 
            href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=326&amp;ArticlePage=2">下一页</A></B></P>
            <P></P></TD>
          <TD width=20>&nbsp;</TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center 
      bgColor=#ffffff border=0>
        <TBODY>
        <TR>
          <TD vAlign=top height=37>
            <DIV align=center></DIV></TD></TR></TBODY></TABLE>
      <TABLE class=border style="WORD-BREAK: break-all" cellSpacing=0 
      cellPadding=0 width="100%" align=center bgColor=#ffffff border=0>
        <TBODY>
        <TR class=tdbg>
          <TD><IMG height=14 src="Java数据对象(JDO)的应用.files/aer.gif" width=8 
            border=0>上一篇文章:<A 
            title="文章标题:JDO是什么&#13;&#10;作    者:zhangxhsj&#13;&#10;更新时间:2004-4-21 20:09:54&#13;&#10;点击次数:253" 
            href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=229">JDO是什么</A><BR><IMG 
            height=14 src="Java数据对象(JDO)的应用.files/aer.gif" width=8 
            border=0>下一篇文章:<A 
            title="文章标题:一个纽约女技术员的JDO经验&#13;&#10;作    者:Teresa&nbsp;Lau&#13;&#10;更新时间:2004-5-9 16:56:11&#13;&#10;点击次数:457" 
            href="http://www.javaeasy.com/ArticleShow.asp?ArticleID=343">一个纽约女技术员的JDO经验</A> 

⌨️ 快捷键说明

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