通过Primary Key查找实体对象

最近在学习Oracle ADF11g,记录学习的点滴。

本文使用HR模式下的Departments和Employees两个数据库表,在进行练习之前需要先创建相关的应用模块和实体对象。

下面是创建的业务组建图:

entity_relation

am_objects

一般在程序开发过程中,很多情况下希望通过关键值来取得实体对象的行以及相关信息。为了访问实体对象的行,需要使用一个相关的对象叫做实体定义(entity definition)。

在运行的时候,每一个实体对象都会对应一个实体定义对象来描述实体的结构和管理实体的实例。

findByPrimaryKey()方法确保先查询缓冲区中给定的主键相匹配的实体对象,然后查找数据库,它从数据库中找到的记录实例化实体对象后会将整个实体对象放入内存,

而不只是主键,因此它并不是一个轻量级的。

创建应用模块(Application Module)之后,启用应用模块的实现类,在实现类中可以创建取得实体对象行的方法。下面创建一个retrieveDepartmentById()方法通过部门标示来查找部门信息来演示相关的步骤:

1,取得实体定义的对象

定义实体对象的时候,生成实体对象的实现类,会生成相关的方法。导入实体对象Departments的实现类DepartmentsImpl到应用模块实现类来取得实体定义,通过实体定义的getDefinitionObject()方法来取得实体对象的定义,

这个方法是从oracle.jbo.server.EntityDefImpl类继承来的,在DepartmentsImpl类中通过oracle.job.server.EntityDefImpl.findDefObject方法取得实体对象定义的对象

2,构造一个Key对象

构造一个Key对象的数组,根据关键值查找出实体行,数组中包括想查找关键字的值,后面的例子创建包含一个单一departmentId值的key

3,使用Key来查找实体对象

使用实体对象的findByPrimaryKey()方法通过关键值来查找实体对象,给方法传入当前数据库事务处理对象,应用模块的实现类中通过getDBTransaction()方法来获得,

实体对象行的具体实现类为:oracle.jbo.server.EntityImpl

4,返回实体行对象或其它数据


下面是在应用模块中实现的一个通过上面介绍的步骤取得实体行的示例代码:

/* Helper method to return an Department by Id */
private DepartmentsImpl retrieveDepartmentById(long departmentId){
  EntityDefImpl departmentDef = DepartmentsImpl.getDefinitionObject();
  Key departmentKey = DepartmentsImpl.createPrimaryKey(new Number(departmentId));
  return (DepartmentsImpl)departmentDef.findByPrimaryKey(getDBTransaction(),departmentKey);
}

转自:http://oracleseeker.com/2008/11/05/adf_find_entity_object_by_primary_key/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值