B12 |
在BO、DMO类中调用另一个BO对象时是否保证一个事务内的正确实现 |
在BO和DMO类中,如要使用其它BO对象,必须使用getBeanHome()方法获得。假如BO1的一个方法内要使用BO2,那么示例如下: BO2Home home = getBeanHome(“BO2Name”, BO2Home.class); BO2 bo2 = BO2Home.create(); bo2.method1(); 其中,getBeanHome()方法的第一个参数(“BO2Name”)是一个字符串,代表BO2的JNDI名称。我们技术部的中间件默认的JNDI名称由“包名.remote接口名”构成,例如,对上述BO2(假定它位于nc.bs.mypackage包中),默认的JNDI名称是“nc.bs.mypackage.BO2”。 不可直接New一个BO对象的实例,否则中间件将无法控制和确保其事务属性的正确实现 |
|
|
|
B13 |
向数据库插入一条记录时,是否为它获得唯一主键(OID) |
提供OID的算法由系统管理统一处理,通过在DMO基类的两个接口方法getOID(String pk_corp)和getOIDs(String pk_corp, int amount)提供给业务模块使用。其中,参数pk_corp是此记录所属的公司的主键。如果参数pk_corp为null,则默认为集团公司的数据。 |
|
|
|
B14 |
业务级校验 |
业务级校验方法是否齐全 |
|
|
|
8.1). DMO(数据管理对象):
序号 |
测试项 |
测试内容 |
质量保证标准 |
问题属性 |
出错频率 |
DM0 |
继承类 |
每个DMO类是否都继承DataManageObject。 |
|
|
|
DM1 |
数据库的利用效率 |
为了提高数据库的利用效率,是否尽量使用PreparedStatement执行SQL操作,不要使用Statement |
|
|
|
DM2 |
DMO类中方法的完整性 |
1.通常DMO类中应包含insert()、delete()、update()方法。还可以包括其它的查询方法。 2.对一些特殊的继承类,如处理参数设置的DMO类,可能不需要insert()和delete()方法。 |
|
|
|
DM3 |
数据库连接 |
在DMO类中,数据库连接必须通过getConnection()方法获得,不允许直接使用JNDI查询 |
|
|
|
DM4 |
数据库资源的获得和释放 |
应在DMO类每个方法的获得Connection、PreparedStatement两种数据库资源,并在方法的结束位置释放数据库资源。 |
|
|
|
DM5 |
库表主键值 |
在DMO类的一个方法中向数据库插入(insert)数据时,是否使用getOID()方法获得一个自动产生的库表主键值。 |
|
|
|
DM7 |
是否尽量使用VO数组 |
如果DMO类中的方法需要返回业务数据,则通常是VO对象或VO对象的数组(或集合)。当客户端需要多个VO对象时,是否尽量使用VO数组的形式返回,以提高数据库和网络效率,不要将多个VO一个一个的查询和返回 |
|
|
|
DM9 |
DMO对象调用另一个BO对象时 |
如果你在DMO对象中需要使用BO对象(通常是提供公共服务的BO),必须使用getBeanHome获得BO对象的home接口。 |
|
|
|
DM11 |
自动生成代码的调整 |
在CodeSeed生成的代码中包含了delete(VO)、insert(VO)、update(VO)、insertArray(VO[])、queryAll()等方法。是否根据业务需要增加、删除、调整DMO类中的方法。 |
|
|
|
DM12 |
参数pk_corp的使用 |
在DMO中的insert()等方法中,向数据库插入记录时,要通过getOID(String pk_corp)或getOIDs (String pk_corp, int amount)为该记录获得一个记录主键(OID),如果参数pk_corp为null,则默认为集团公司。 |
|
|
|
DM13 |
用VO对象写库时 |
数据库表中加一字段时,执行stmt = con.prepareStatement(sql)后,执行stmt.setString(3, invcl.getInvclasscode()语句中的序号是否与数据库表中字段顺序一致(举例附后) |
|
|
|
DM14 |
条件拚写语句 |
条件拚写语句是否符合业务逻辑 |
|
|
|
DM15 |
DMO类的查询、增加、修改方法 |
查询:执行完查询Sql语句ResultSet rs = stmt.executeQuery()后,是否对查询vo对象正确地赋值,且赋值属性是否有遗漏 增加:执行完插入Sql语句stmt = con.prepareStatement(sql); 是否对stmt正确地赋值,且赋值属性是否有遗漏,然后执行stmt.executeUpdate()更新数据库 更新:执行完更新Sql语句stmt = con.prepareStatement(sql); 是否对stmt正确地赋值,且赋值属性是否有遗漏,然后执行stmt.executeUpdate()更新数据库 |
|
|
|
评论