Root Application Module and Nested Application Module
一个AM不是根级别的AM就是嵌套的AM,根级别不隶属于任何其他的AM,一个根级别的AM为包含于它的所有的对象提供一个事务上下文环境。他可以包含有另外一个嵌套于他的AM,根级别AM的创建通过调用JDNI来实现。
嵌套的AM包含于另外一个AM中,一个嵌套的AM依赖于他的父级的AM,假如你不习惯这种父子关系,你可以选择调用最终的根级别的AM,嵌套的AM使用的事务上下文环境是由根级别的AM来提供的,这样,AM中数据的操作最终都是在根级别的AM上进行提交或者回滚的。
Transaction
和根AM相关联,提供一个事务上下文环境的对象。对于任何一个AM,都可以通过调用getOADBTransaction()方法来访问和该AM相关的事务对象. getOADBTransaction()方法首先会定位到根级别的AM上,之后将于当前AM相关的事务对象返回。
事务对象用来管理数据库连接和实体缓存。这样,隶属于同一个AM上的多个VO对象,一旦一个VO对象发生了更改(这里所说的变更主要是数据上的变更,如当前VO中插入了新的行或者是行上的属性值发生了变更),那么它的变化对于其他的VO对象都是可见的(可见的,既,其他的VO可以获取到修改后的VO行中的属性值)。反之,如果有两个VO分别隶属于两个不同的AM,那么AVO的变化对于BVO来说是不可见的,知道AVO的变化被提交到数据库,BVO执行了查询操作后,BVO才能获取到更新的结果。
Creating Application Module
根AM的创建过程
1、通过JDNI找到AM Home
2、调用AM Home中的create()方法。
当根级别的AM被创建了以后呢,便可以调用它的createApplicationModule()创建嵌套于其上的AM了。
Component Object
和之前所描述的一样,根级别的AM可以包含其他的一些嵌套的AM。言外之意,意味着他包含了一些VO和VL对象,VO使得用户可以查询数据库表中的数据并且通过他们来访问这些数据。VL关联了两个有逻辑关系的VO,这样,其中一个VO(主VO)上的事件会导致另外一个相关的VO(从VO)依据主VO的值更新自身的数据,这些对象都可以作为组件对象通过AM来访问。
组件对象在AM设计或者运行时便会被包含进来。在AM设计时候便被包含进来的组件对象只能作为静态的组件对象被访问。在运行时候创建的对象会被作为动态对象来访问,动态的对象都是通过调用create方法来创建的,例如:createViewObject()。
每个组件对象在AM中都会赋予其一个名字,这个名字用来定位到指定的组件,当定位一个组件对象的时候,需要传递一个relative或absolute的组件名,一个relative名可以令AM从当前的AM中开始查找需要的组件对象。一个absolute名会使AM从跟级别的AM开始查找。
Application Module Definition
在每一个AM的实例之后,是描述该AM的一个定义或者元数据。可以把AM的定义看作是AM实例的一个工厂。AM的定义可以通过它的全名来进行标识,该标识是通过BC4J包验证的标识名称。