2009年2月23日星期一

Form开发中常用触发器功能在ADF中的对应实现方法

本文主要描述Form开发中常用触发器功能在ADF中的对应实现方法。

一、验证和默认值

1WHEN-VALIDATE-RECORD

EO的实现类EntityImpl中,添加返回值为boolean类型的public方法,一般名为validateXXX()

如果验证成功,返回true,如果验证失败,则返回false。添加该方法到EO上的实体级验证。并可以

根据需要添加必要的错误提示消息。

2WHEN-VALIDATE-ITEM

EO的实现类EntityImpl中,添加返回值为boolean类型的public方法,一般名为validateXXX()

接收一个类型与要验证属性类型相同的参数。如果验证成功,返回true,如果验证失败,则返回

false。添加该方法到EO的属性级。并可以根据需要添加必要的错误提示消息。

3WHEN-DATEBASE-RECORD

重写EOaddToTransactionManager()方法,添加必要的代码在调用super之后。

4WHEN-CREATE-RECORD

(1)重写EOcreate()方法,在调用super之后使用,根据实际情况使用setAttrName()方法,为必要

的属性设置默认值。

(2)为使用数据库sequence的主键设置sequence值,使用SequenceImpl帮助类调用getSequenceNumber()

方法得到sequence的下一个值,并设置该值到主键属性上。

(3)如果要在一条新记录被保存到数据库时才设置其sequence值,而不使用数据库触发器,则需要重写

EO的实现类中的prepareDML()方法。

(4)如果要使用数据库中的BEFOREINSERTFOREACHROW触发器,则设置该主键属性的数据类型为DBSequence

而非常规的Number类型。

5WHEN-REMOVE-RECORD

重写EOremove()方法,在调用super之前或者之后添加必要的代码。

二、查询

1PRE-QUERY

重写VO实现类中的executeQueryForCollection()方法,在调用super前添加必要的代码。

2ON-COUNT

重写VO实现类中的getQueryHintCount()方法,添加自己的代码,而不调用super

3POST-QUERY

一般情况下,在ADF中很少使用类似于POST-QUERY触发器的功能,即根据当前行的外键关系取其他表中的字段

值,ADF如果需要使用到类似的功能,通常会建立基于多个EOVO。不过,如果要实现类似于POST-QUERY触发器

的功能,也可以通过重写VO实现类中的createInstanceFromResultSet()方法。

4ON-LOCK

重写EO实现类中的lock()方法,添加自己的代码,而不调用super

三、数据库连接

1POST-LOGON

重写客户化的AM实现类中的afterConnect()方法,但是如果想要在AM被不同的用户访问时添加逻辑,可以通过

重写AM中的prepareSession()方法。

2PRE-LOGOUT

重写客户化的AM实现类中的beforeDisconnect()方法。

四、事务“POST”

1PRE-COMMIT

在客户化的DBTransactionImpl类中,重写commit()方法,添加必要的代码在调用super之前。

2PRE-INSERT

重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码在调用super之前。

3ON-INSERT

重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码,而不调用super

4POST-INSERT

重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码在调用super之后。

5PRE-DELETE

重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码在调用super之前。

6ON-DELETE

重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码,而不调用super

7POST-DELETE

重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码在调用super之后。

8PRE-UPDATE

重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码在调用super之前。

9ON-UPDATE

重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码,而不调用super

10POST-UPDATE

重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码在调用super之后。

11POST-FORMS-COMMIT

(1)如果需要添加对于整个事务的一段代码,可以重写客户化的DBTransactionImpl类中的doCommit()方法,在

调用super之前添加适当的代码。

(2)如果需要对于事务中的Entity添加适当的处理代码,可以重写EO中的beforeCommit()方法,在其中添加适当

的代码。

12POST-DATEBASE-COMMIT

在客户化的DBTransactionImpl类中重写commit()方法,添加必要的代码在调用super之后。

五、错误处理

1ON-ERROR

使用客户化的Error HandlerADF BindingContext中。

0 评论:

发表评论