8.1). ValubleObject:数值对象
一个VO类包装一组代表业务含义的数据,负责在系统各层之间传递业务数据。通常一个VO对应一个数据库表,但也可以对应多个数据库表,或对应一个数据库表的部分字段。
序号 |
测试项 |
测试内容 |
质量保证标准 |
问题属性 |
出错频率 |
VO1 |
继承性 |
该类是否继承于VO类 |
正确性 |
错误 |
|
VO2 |
get()和set()方法是否齐全 |
VO类是否包含每个需要持久化属性的setXXX和getXXX方法。 在set方法中是否对属性进行合法性校验,校验失败抛出ValidationException异常 |
正确性 |
错误 |
|
VO3 |
构造子 |
该类应包含无参构造子、只含参数OID的构造子 |
正确性 |
错误 |
|
VO5 |
参数 |
全参构造子中参数的顺序是否与set语句的顺序一致?(去掉) |
正确性 |
错误 |
|
VO6 |
语句体 |
在每个set方法中是否有修改对应属性的语句体? |
正确性 |
错误 |
|
VO7 |
语句体 |
在每个get方法中是否有返回对应属性的语句体? |
正确性 |
错误 |
|
VO8 |
空值问题 |
所有为保存操作员的录入数据而创建VO对象的类属性应初始化为null,直到操作员录入数据时才为相应属性分配空间和赋值。在保存到数据库时,把空属性(null)映射为数据库相应字段的null。 |
|
|
|
VO9 |
Integer、Double包装类型 |
由于Java的Primitive Type类型(如int、double)不是对象,所以不能使用它们作为类属性类型,应该采用对应的Integer、Double等相应的包装类型。 |
|
|
|
8.2). BO业务对象层:
每个BO类都继承BusinessObject类。BO对象通过操纵DMO对象和其他BO对象完成业务逻辑。
序号 |
测试项 |
测试内容 |
质量保证标准 |
问题属性 |
出错频率 |
BO1 |
BO类中是否存在名称相同且参数个数相同的方法 |
一个BO类中不能有名称相同且参数个数相同的两个方法同时存在。因为目前中间件生成工具处理此情况存在问题 |
|
|
|
BO3 |
事件监听器和处理事件 |
不建议使用可视化进行事件处理,请手工注册事件监听器和处理事件 因为可以减少不必要的代码 |
|
|
|
B4 |
打印异常 |
所有异常应打印出来,可使用下述语句: e.printStackTrace(System.err); |
|
|
|
B5 |
抛出异常 |
BO的所有业务方法都必须抛出异常:java.rmi.RemoteException;否则将不能生成EJB辅助代码 |
|
|
|
B6 |
BO对象中使用其它BO对象或环境变量时 |
在BO对象中如要使用其它BO对象或环境变量,必须使用getBeanHome()和getEnvProperty()方法获得,不要直接使用JNDI查询。使用其它BO对象的方法代码示例如下: BO2Home home = getBeanHome(“BO2Name”, BO2Home.class); BO2 bo2 = BO2Home.create(); |
|
|
|
B7 |
EJB规范 |
基类BusinessObject包含了SessionBean接口中的setSessionContext()、ejbCreate()、ejbActivate()、ejbPassivate()、ejbRemove()方法。这是提供给EJB Server的调用接口,不要在你的BO类中调用这几个方法。 |
|
|
|
B8 |
工具生成代码是否可用 |
在CodeSeed为一个数据库表生成代码时,你可以选择包含BO类以及home、remote接口、BO_Client(客户端代理)。所有这些代码演示系统各层之间的调用关系,这些类是否根据业务要求加以调整 |
|
|
|
B9 |
BO类的设计要遵循大粒度(coarse-grained)的原则 |
即尽量将一项业务的所有方法放入同一个BO类中。这是设计EJB(尤其是Stateless Session Bean)的一项原则,它能有效的提高对系统资源的利用。具体到我们的编码实践中,虽然CodeSeed针对每个DMO类生成了一个BO类,但我们要将相关的BO类整合成一个BO类。 |
|
|
|
B10 |
BO类中方法的命名是否反映该方法的业务含义 |
虽然CodeSeed生成的代码中将方法命名为insert()、update()等,还应将它们更名为addBill()、auditBill()等业务名称 |
|
|
|
B11 |
BO类是否生成供客户端调用BS端的代码 |
当设计完BO类后,需调用NC EJB开发工具集生成和部署代码,生成瘦客户端,供客户端调用BS端的代码。 |
|
|
|
评论