|
|
如何用JDO开发数据库应用(5)
project属性配置界面基本上不需要怎么设置,只要做两个必须的配置:
将MySQL的JDBC驱动加入到CLASSPATH中
将我们的类代码的根目录加入到CLASSPATH中 界面如下:

(图片较大 请放大后查看)
点击“OK”后,我们就到了主窗口,在主窗口中,我们可以进行metadata的编辑工作。我们通过菜单Meta-->Add Classes将前面的两个数据类加入到元数据中,表示这两个类是需要存储的。其余的数据表结构等等繁琐的事务,我们全部留给JDOGenie自动完成。添加数据类的过程中需要创建一个元数据文件,根据JDO的标准,一般情况下我们只需要在CLASSPATH根目录下创建一个“system.jdo”即可。加入数据类后的界面如下:

(图片较大 请放大后查看)
而自动生成的元数据文件system.jdo内容非常简单,实际上直接用手工写也不难:
<?xml version="1.0" encoding="UTF-8"?>
<jdo>
<package name="credit.system">
<class name="CreditCard" />
<class name="TransactionRecord" />
</package>
</jdo>
不过如果类比较多,之间关系也比较复杂的时候,就最好通过工具完成,以免出现语法和语义错误,除非你已经很有经验。
之后,我们选择菜单的Build-->Recreate Schema来创建相应的数据库。数据库的表结构是自动生成的,如果你对其中一些表名或字段名或字段长度有异议,可以在主窗口中自定义。这里为简明扼要,全部采用自动生成。如果你想在建表之前看看数据结构,可以选择菜单“Build-->View Schema”先预览一下生成的表结构SQL代码:
-- credit.system.CreditCard
create credit_card (
credit_card_id INTEGER not null, --
address VARCHAR(255), -- address
allow_over_draft FLOAT, -- allowOverDraft
balance FLOAT, -- balance
create_time DATETIME, -- createTime
idcard VARCHAR(255), -- idcard
initial_balance FLOAT, -- initialBalance
last_ansaction_time DATETIME, -- lastTransactionTime
nme VARCHAR(255), -- name
phone VARCHAR(255), -- phone
jdo_version SMALLINT not null, --
consaint pk_credit_card primary key (credit_card_id)
) TYPE = InnoDB;
-- za.co.hemtech.jdo.server.jdbc.sql.HighLowJdbcKeyGenerator
create jdo_keygen (
_name VARCHAR(64) not null,
last_used_id INTEGER not null,
consaint pk_jdo_keygen primary key (_name)
) TYPE = InnoDB;
-- credit.system.TransactionRecord
create ansaction_record (
ansaction_record_id INTEGER not null, --
amount FLOAT, -- amount
credit_card_id INTEGER, -- card
create_time DATETIME, -- createTime
note VARCHAR(255), -- note
jdo_version SMALLINT not null, --
consaint pk_ansaction_record primary key (ansaction_record_id)
) TYPE = InnoDB;
接下来,我们保存这个Project,也就是将配置信息写入“creditSys.jdogenie”。下面我们就可以继续开发了,也就是说,我们所有的数据类包装工作就全部完成了,已经可以享受JDO的自动维护的对象存储和灵活的面向对象的JDOQL查询语言的好处了。
JDOGenie1.4.7还有一个好处,是它新增的UML类图功能,简洁明了地给出数据类之间的关系,对于理解别人的数据模型非常有用。选择菜单“Meta-->Diagrams”,将所有的类都加到图中,即可看到本文中的数据模型:

(图片较大 请放大后查看)
如果类比较多的话,可能这些关系线段会有交叉,那就需要我们手动地调整一下各个类的位置,做到尽量减少交叉。一个复杂一点的类图示范如下(未调整位置):

(图片较大 请放大后查看)
(未完待续) |
|