介绍:
本文通过一个简单的例子说明了怎样使用对象关系映射桥(ojb)。例子程序含有义产品
目录数据库和一些用户功能。程序的源代码随ojb源代码一起发布,包含在org.apache.
ojb.tutorial1包中。
文档演示了了通过对象关系桥api(persistencebroker)去实现五个用户功能的小程序
的具体结构。五个功能中包括对对象的修改,删除,存取等操作。文档也演示了怎样把
一个product存取对象映射到关系数据库中的一个表。
示例程序:
该例子是一个控制台下的程序,通过不同的用户输入数据来操作产品目录数据库,包括
五个功能:
1. list all products d╠╠列出库存所有产品
2. enter a new product d d╠在库存里建立一个新产品
3. edit an existing product record d╠╠修改库存里的一个产品
4. delete a product record d dㄉd境獯胬锏囊桓霾?
5. quit the application d╠╠为了统一,我们也把它作为一个功能
以上的五个功能,仅仅能函盖ojb的一些基础概念。例子中没有提出怎样实现1:1,1:
n或是m:n的映射,想了解这些可以去看导学三 d╠╠高级o/r.
运行例子程序:
为了执行文档中所示程序,你首先必须准备好例子。没有必要去配置一个数据库,例子
程序已经集成了hsqldb数据库,你所要做的就是用ant运行示例程序。
解压缩ojb的源码,确保你现在所处的目录式ojb所在的目录:
在windows 9x/nt/2000/xp下:
准备例子:执行bin\build.bat prepare-tutorials
运行例子:执行bin\tutorial1.bat
在unix/linux下:
准备例子:执行bin/build.sh prepare-tutorials
运行例子:执行bin/tutorial1.sh
示例程序的结构:
整个程序的结构可以用下面的类图来表示。
程序含有一些usecases。usecase接口通过一个抽象基类abstractusecase来实现,该类
为具体类的实现提供了一些很使用的代码。有四个具体的usecase类:uclistallproduc
ts,ucenternewproduct,ucdeleteproduct和ucquitapplication类。product类表示在
在product数据库中的一条product记录。
application.run()方法实现了一个循环,程序在application.selectusercase()方法中
等待用户的输入,一旦某个功能被选择,usecase.apply()方法将被调用。usecase是通
过我们熟悉的command设计模式来实现。
while (true)
{
try
{
// select a use case and perform it
usecase uc = selectusecase();
uc.apply();
}
catch (throwable t)
{
system.out.println(t.getmessage());
}
}
usecase方法含有两个方法:getdescription()方法和apply()方法。usecase.getdescr
iption()方法用来把功能的基本信息显示给用户,在application.selectusecase()方法
中将会给出一个关于所有功能的目录。usecase.apply()方法是不同功能的商业逻辑实现
。
下面是最简单的功能ucquitapplication类中apply()方法的实现:
public void apply()
{
system.out.println("bye...");
system.exit(0);
}