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

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

📁 含有许多JAVA的技巧!
💻 TXT
📖 第 1 页 / 共 2 页
字号:
false); 
System.out.println("Name : " + person.getName()); 
System.out.println("Address : " + 
person.getAddress()); 
System.out.println("SSN : " + person.getSsn()); 
System.out.println("Email : " + person.getEmail()); 
System.out.println("Home Phone: " + 
person.getHomePhone()); 
System.out.println("Work Phone: " + 
person.getWorkPhone()); 
} 
pm.close(); 
} 
第四步:改变其中一个人的名字 
改变存储在数据库中的一个人的信息的代码也十分简单,它与显示数据库中人的信息的代码非常类似。在这里,我们需要创建一个事务(因为要修改其中的记录),使用定义的setName()方法修改一个人的名字,最终提交该事务,保存所作的修改。这种操作与处理临时对象之间真正的差别是,我们考虑是事务。 
public void change() { 
Person person; 

// 从数据存储库中获取对象 
pm = pmf.getPersistenceManager(); 
transaction = pm.currentTransaction(); 
// 修改第二个保持记录的DataString字段 
person = (Person) pm.getObjectById(id.elementAt(1), 
false); 
person.setName("Steve Gerrard"); 
// 提交事务并关闭可保持性管理器 
transaction.commit(); 
pm.close(); 
} 
第五步:删除一个人的资料 
你自己能够想象出从数据库中删除第二个人资料的代码吗?因为我们已经了解了所有编写这一代码所需要的知识。仔细地研究一下下面的代码就会发现,我们使用了第二步中的可保持性管理器方法中提到的deletePersistent()方法。 
public void delete() { 
// 从数据库中获取对象 
pm = pmf.getPersistenceManager(); 
transaction = pm.currentTransaction(); 
// 从数据库中删除第二个人的信息,并从ID向量中删除其ID 
pm.deletePersistent(pm.getObjectById(id.remove(1), 
false)); 
// 提交事务并关闭可保持性管理器 
transaction.commit(); 
pm.close(); 
} 
第六步:在main()方法中运行上面的代码 
最后,整个代码需要有一个main()串起来,在数据库中输入人的信息、改变其中一个人的名字,然后删除该人的资料。如果运行这一程序,就会看到程序运行到每一步时的地址簿。 
public static void main(String[] args) { 
System.out.println("Create PersonPersist"); 
PersonPersist personPersist = new PersonPersist(); 

System.out.println("Setup and persist a group of people"); 
personPersist.persistPeople(); 

System.out.println("Display the persisted people"); 
personPersist.display(SIZE); 

System.out.println("Change a name "); 
personPersist.change(); 
personPersist.display(SIZE); 

System.out.println("Delete a person "); 
personPersist.delete(); 
personPersist.display(SIZE - 1); 
} 
JDOEnhancer:创建JDOEnhancer的JDO描述符 

现在,我们已经编写好了整个应用程序的源代码,下一步需要作的就是创建一个JDOEnhancer将要使用的 
JDO描述符。读者一定会问,JDOEnhancer是什么?JDO架构是基于下面的理念的:一个JDO实现能够获取类的字节码,对它们进行处理,添加一些必要的功能。例如,JDOEnhancer将使类实现PersistanceCapable接口(因此我们不用自己编程实现这一接口),而且能够实现该接口中的一些方法。因此在对代码编译后我们就会发现,我们必须运行JDOEnhancer对字节码进行适当的处理。我们需要创建一个给出我们需要保持的类的信息的描述符文件,这一文件如下所示: 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE jdo SYSTEM 
"file:/D:/Apps/OpenFusionJDO/xml/schema/jdo.dtd"> 
<jdo> 
<package name="addressbook"> 
<class name="Person" identity-type="datastore"> 
</class> 
</package> 
</jdo> 
这只是一个最基本的文件,但能够满足我们的要求。当然了,还有许多更复杂的映射。下面是OpenFusion例子中一个稍微复杂一些的映射: 
<class name="Department" identity-type="datastore"> 
<field name="name"/> 
<field name="employees"> 
<collection element- 
type="com.prismt.j2ee.jdo.examples.appKeyDepartment.Employee"> 
</collection> 
</field> 
<field name="manager"/> 
</class> 
</package> 
</jdo> 
现在我们已经编写好了代码和JDO描述符文件,我们将对它们进行整合,并讨论如何建立整个系统。要建立整个系统,我们只需要简单的几步工作即可: 
1、编译代码。 
2、运行JDOEnhancer。 
3、使用JDOEnhancer的输出建立数据库。 
4、运行应用程序。 
第一步:编译代码 
我想广大的读者想必已经知道如何运行javac了吧。在运行javac之前,我们只要保证正确地设置CLASSPATH就可以了。下面是一个在Windows平台上运行javac的例子: 
% set OPENFUSION_DIR=D:\Apps\OpenFusionJDO 
% set 
CLASSPATH=%OPENFUSION_DIR%\lib\connector.jar;%OPENFUSION_DIR%\ 
lib\jndi.jar;%OPENFUSION_DIR%\lib\log4j.jar;%OPENFUSION_DIR%\l 
ib\xerces.jar;%OPENFUSION_DIR%\lib\classes12.zip;%OPENFUSION_D 
IR%\lib\jdo.jar;%OPENFUSION_DIR%\lib\jta- 
spec1_0_1.jar;%OPENFUSION_DIR%\lib\ofjdo.jar;. 

% javac –d . Person*.java 
第二步:运行JDOEnhancer 
JDOEnhancer需要使用在上一步编译中得到的字节码和我们先前建立的JDO描述符文件。下面是OpenFusion JDOEnhancer的完整语法: 
java com.prismt.j2ee.jdo.enhancer.JDOEnhancer 

命令选项: 
-cp 开始搜索需要强化的类的基本路径,与CLASSPATH不同,它是编译后的可保持类所在的目录 
-oc 存储强化后的类的目录 
-pd JDO描述符文件 

可选项: 
-db 指定目标数据库 [oracle、sybase等] 
-od 生成SQL脚本的目录 

下面是为建立我们的应用程序而运行JDOEnhancer的一个例子: 
% java com.prismt.j2ee.jdo.enhancer.JDOEnhancer -oc . -pd 
person.jdo -db oracle -od db -cp . 
第三步:使用JDOEnhancer的输出建立数据库 
,只要使用–db和-od可选项,JDOEnhancer就能够创建建立数据库的数据库脚本。它能够创建许多脚本,但其中有一个的名字叫load_all.sql,打开该文件并将它加载到一个SQL提示符中。(例如sqlplus for Oracle) 

CREATE SEQUENCE instid_seq INCREMENT BY 1 
; 

CREATE TABLE JDO_addressbook_Person_SCO 
( 
inst_id INTEGER NOT NULL, 
class INTEGER NOT NULL, 
JDO_address VARCHAR2(255), 
JDO_email VARCHAR2(255), 
JDO_homePhone VARCHAR2(255), 
JDO_name VARCHAR2(255), 
JDO_ssn VARCHAR2(255), 
JDO_workPhone VARCHAR2(255) 
) 
; 
CREATE TABLE JDO_addressbook_Person 
( 
inst_id INTEGER NOT NULL, 
class INTEGER NOT NULL, 
JDO_address VARCHAR2(255), 
JDO_email VARCHAR2(255), 
JDO_homePhone VARCHAR2(255), 
JDO_name VARCHAR2(255), 
JDO_ssn VARCHAR2(255), 
JDO_workPhone VARCHAR2(255) 
) 
; 
CREATE TABLE prismjdoProp 
( 
name VARCHAR2(255) PRIMARY KEY, 
value VARCHAR2(255) 
) 
; 
CREATE TABLE prismjdoExtents 
( 
class_id NUMBER(38,0) PRIMARY KEY, 
class_name VARCHAR2(255) UNIQUE, 
app_key VARCHAR2(255) 
) 
; 
ALTER TABLE JDO_addressbook_Person_SCO ADD PRIMARY KEY (inst_id, class) 
; 
ALTER TABLE JDO_addressbook_Person ADD PRIMARY KEY (inst_id,class) 
; 

INSERT INTO prismjdoExtents VALUES(0, 'addressbook.Person','com.prismt.j2ee.jdo.spi.DBKey') 
; 
COMMIT WORK 
; 

INSERT INTO prismjdoProp VALUES('USE.RDBMS.TRIGGERS', 'true') 
; 
COMMIT WORK 
; 
第四步:运行应用程序 
现在已经建立了数据库,我们就可以运行应用程序了。怎么样,分享一下自己的劳动成果吧! 
% java addressbook.PersonPersist 
结束语 
我们已经讨论了如何使用OpenFusion JDO实现来处理JDO标准。这是一个全新的领域,开发人员可以集中精力处理业务需求和对象,而无需对SQL十分精通。

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )
 

⌨️ 快捷键说明

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