本文主要描述Form开发中常用触发器功能在ADF中的对应实现方法。
一、验证和默认值
1、WHEN-VALIDATE-RECORD
在EO的实现类EntityImpl中,添加返回值为boolean类型的public方法,一般名为validateXXX(),
如果验证成功,返回true,如果验证失败,则返回false。添加该方法到EO上的实体级验证。并可以
根据需要添加必要的错误提示消息。
2、WHEN-VALIDATE-ITEM
在EO的实现类EntityImpl中,添加返回值为boolean类型的public方法,一般名为validateXXX(),
接收一个类型与要验证属性类型相同的参数。如果验证成功,返回true,如果验证失败,则返回
false。添加该方法到EO的属性级。并可以根据需要添加必要的错误提示消息。
3、WHEN-DATEBASE-RECORD
重写EO的addToTransactionManager()方法,添加必要的代码在调用super之后。
4、WHEN-CREATE-RECORD
(1)重写EO的create()方法,在调用super之后使用,根据实际情况使用setAttrName()方法,为必要
的属性设置默认值。
(2)为使用数据库sequence的主键设置sequence值,使用SequenceImpl帮助类调用getSequenceNumber()
方法得到sequence的下一个值,并设置该值到主键属性上。
(3)如果要在一条新记录被保存到数据库时才设置其sequence值,而不使用数据库触发器,则需要重写
EO的实现类中的prepareDML()方法。
(4)如果要使用数据库中的BEFOREINSERTFOREACHROW触发器,则设置该主键属性的数据类型为DBSequence,
而非常规的Number类型。
5、WHEN-REMOVE-RECORD
重写EO的remove()方法,在调用super之前或者之后添加必要的代码。
二、查询
1、PRE-QUERY
重写VO实现类中的executeQueryForCollection()方法,在调用super前添加必要的代码。
2、ON-COUNT
重写VO实现类中的getQueryHintCount()方法,添加自己的代码,而不调用super。
3、POST-QUERY
一般情况下,在ADF中很少使用类似于POST-QUERY触发器的功能,即根据当前行的外键关系取其他表中的字段
值,ADF如果需要使用到类似的功能,通常会建立基于多个EO的VO。不过,如果要实现类似于POST-QUERY触发器
的功能,也可以通过重写VO实现类中的createInstanceFromResultSet()方法。
4、ON-LOCK
重写EO实现类中的lock()方法,添加自己的代码,而不调用super。
三、数据库连接
1、POST-LOGON
重写客户化的AM实现类中的afterConnect()方法,但是如果想要在AM被不同的用户访问时添加逻辑,可以通过
重写AM中的prepareSession()方法。
2、PRE-LOGOUT
重写客户化的AM实现类中的beforeDisconnect()方法。
四、事务“POST”
1、PRE-COMMIT
在客户化的DBTransactionImpl类中,重写commit()方法,添加必要的代码在调用super之前。
2、PRE-INSERT
重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码在调用super之前。
3、ON-INSERT
重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码,而不调用super。
4、POST-INSERT
重写EO中的doDML()方法,如果operation等于DML_INSERT时,添加必要的代码在调用super之后。
5、PRE-DELETE
重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码在调用super之前。
6、ON-DELETE
重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码,而不调用super。
7、POST-DELETE
重写EO中的doDML()方法,如果operation等于DML_DELETE时,添加必要的代码在调用super之后。
8、PRE-UPDATE
重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码在调用super之前。
9、ON-UPDATE
重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码,而不调用super。
10、POST-UPDATE
重写EO中的doDML()方法,如果operation等于DML_UPDATE时,添加必要的代码在调用super之后。
11、POST-FORMS-COMMIT
(1)如果需要添加对于整个事务的一段代码,可以重写客户化的DBTransactionImpl类中的doCommit()方法,在
调用super之前添加适当的代码。
(2)如果需要对于事务中的Entity添加适当的处理代码,可以重写EO中的beforeCommit()方法,在其中添加适当
的代码。
12、POST-DATEBASE-COMMIT
在客户化的DBTransactionImpl类中重写commit()方法,添加必要的代码在调用super之后。
五、错误处理
1、ON-ERROR
使用客户化的Error Handler在ADF BindingContext中。
0 评论:
发表评论