• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何用JDO开发数据库应用(4)

发布: 2007-7-14 21:19 | 作者: 佚名    | 来源: 网络转载     | 查看: 18次 | 进入软件测试论坛讨论

领测软件测试网 如何用JDO开发数据库应用(4)

· 4.2. 如果怕出乱子……建议的代码规范

记得以前听过一句话,“世间永恒不变的真理就是不存在永恒不变的真理”,这里,我也想说一句:编程世界里最完美的解决方案就是不要认为有最完美的解决方案。(说什么啊,简单听不懂。呵呵,我自己也有点听不懂)。

我想说的是:JDO也是有一定的限制的,不能让你完全地展开双翅(注意,是“鱼翅”),在面向对象的大海中遨游。为什么JDO会有限制呢?因为它的原理是将你的类代码进行一定的改造,将JDO涉及的一些管理和维护代码插入到类代码中,这样,你的调用代码可能需要进行一些改变。这些就是JDO的限制。简单地说,如果你得到了一个TransactionRecord类型的对象tr,想通过它取得涉及的信用卡对象,不建议通过下面的代码:tr.card得到,而是建议将这个属性声明为private的,然后给出一个getter来获取(getCard()),也就是进行JavaBean式的属性包装。这样,我们的两个数据类就会变成下面的样子:

CreditCard.java:


package credit.system;


import java.util.Date;


public class CreditCard {
String name; //姓名
String address; //地址
String idcard; //身份证号
String phone; //电话
Date createTime; //开户日期
Date lastTransactionTime; //最近一次交易的时间
float initialBalance; //开户金额
float balance; //目前余额
float allowOverDraft; //允许透支额

public String toString() { return "信用卡:余额="+balance+",持卡人="+name+",身份证号="+idcard+",电话="+phone; }
public void setName(String value) { name = value; }
public String getName() { return name; }

public void setAddress(String value) { address = value; }
public String getAddress() { return address; }

public void setIdcard(String value) { idcard = value; }
public String getIdcard() { return idcard; }

public void setPhone(String value) { phone = value; }
public String getPhone() { return phone; }

public void setCreateTime(Date value) { createTime = value; }
public Date getCreateTime() { return createTime; }

public void setLastTransactionTime(Date value) { lastTransactionTime = value; }
public Date getLastTransactionTime() { return lastTransactionTime; }

public void setInitialBalance(float value) { initialBalance = value; }
public float getInitialBalance() { return initialBalance; }

public void setBalance(float value) { balance = value; }
public float getBalance() { return balance; }

public void setAllowOverDraft(float value) { allowOverDraft = value; }
public float getAllowOverDraft() { return allowOverDraft; }
}


TransactionRecord.java:


package credit.system;


import java.util.Date;


public class TransactionRecord {
Date createTime; //交易发生时间
float amount; //交易金额
String note; //备注

CreditCard card; //信用卡

public String toString() { return "交易记录:持卡人="+card.name+",身份证号="+card.idcard
+",交易额="+amount+",时间="+createTime; }
public void setCreateTime(Date value) { createTime = value; }
public Date getCreateTime() { return createTime; }

public void setAmount(float value) { amount = value; }
public float getAmount() { return amount; }

public void setNote(String value) { note = value; }
public String getNote() { return note; }

public void setCard(CreditCard value) { card = value; }
public CreditCard getCard() { return card; }
}

实际上,这些增加getter和setter的过程有很多工具可以帮忙,比如JBuilder,或者是Together,甚至是最小而精的免费工具Gel!

这样的采用访问器包装私有属性的建议,一般来说绝大多数Java开发人员都还是可以接受的。

· 4.3. 编辑metadata: system.jdo

这个过程,我们完全可以通过JDOGenie带的图形工具来完成。

我们将上面两个类编译以后,打开JDOGenie的workBench,即运行JDOGenie1.4.7解包后的/workbench.bat,如果是在UnixLinux下就运行workbench.sh。注意要求你预先设置一个环境变量:JAVA_HOME,指向系统安装的JDK的根目录(不是bin目录)。

我们在其中新建一个project(File-->New Project),选择前面编译生成的类代码所在的根目录中(以下简称CLASSPATH,两个.class文件应该在该目录的credit\system\子目录中)存放这个project,因为这个project实际上是一个配置文件(注意不是.jdo文件),一般包含一些JDO产品相关的信息,比如是否打开某些扩展功能,License号是多少等等,这个文件在运行时是需要的。我们选择一个project名:creditSys,JDOGenie会在CLASSPATH中将这个project保存为一个名为“creditSys.jdogenie”的文件。

我们先设置数据库,为保证实用性,我们选择MySQL作为底层数据库,安装MySQL的过程很简单,从MySQL网站下载4.0.13版本,安装到系统中,然后启动mysql服务即可。我们会采用其安装后自动生成的“test”数据库作为本文的数据库。

我们还需要在MySQL网站上下载jdbc驱动:版本号是3.0.7,下载后,将其ZIP包中的mysql.jar文件解出来放到某个目录中备用。

设置数据库的界面如下:

点击放大
(图片较大 请放大后查看)

配置好数据库后,可以点击下面的“Test”按钮测试一下连接是否正常。可能你会看到一个找不到MySQL的JDBC驱动的错误提示,没关系,我们直接点击OK,进入project属性配置界面,在其中将JDBC驱动加入,然后再回来测试连接即可。

(未完待续)

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网