-
Notifications
You must be signed in to change notification settings - Fork 21
ActiveRecord中的回调方法
shuzheng edited this page Aug 13, 2015
·
1 revision
etmvc中ActiveRecord模型对象拥有很多的操作方法,其中有一类称为回调方法,在ActiveRecord模型对象的生命周期内,回调给予你更多的、更灵活控制能力。回调方法就象一个钩子,它允许在模型对象操作数据的前后执行一段逻辑,这实际就是ActiveRecord模型对象的AOP编程。
ActiveRecord模型对象支持的回调方法有:
回调方法 | 执行时机 |
---|---|
beforeCreate | 对象创建前执行 |
afterCreate | 对象创建后执行 |
beforeUpdate | 对象更新前执行 |
afterUpdate | 对象更新后执行 |
beforeSave | 对象保存前执行 |
afterSave | 对象保存后执行 |
beforeDestroy | 对象删除前执行 |
afterDestroy | 对象删除后执行 |
回调方法签名:public void callbackMethodName() throws ActiveRecordException
我们举个回调方法应用的典型例子,在用户资料管理中,用户的信息除基本的信息外,还包括照片,而照片以文件的形式被保存在某个地方。为保证数据的完整性,在用户资料删除时必须同时删除其关联的照片文件。
我们来看一下用户的模型类定义:
@Table(name="users")
public class User extends ActiveRecordBase{
@Id private Integer id;
@Column private String name;
@Column private String phone;
@Column private String filename;
public void afterDestroy() throws ActiveRecordException{
String path = getImagePath();
File file = new File(path);
if (file.exists() && file.isFile()){
file.delete();
}
}
public String getImagePath(){
return "d:/temp/" + id + "_" + filename; //获取照片文件存放路径
}
//get,set...
}
我们重载了afterDestroy,告诉ActiveRecord框架,在记录删除后将相关的照片文件删除。现在来看调用代码:
User user = User.find(User.class, 1);
user.destroy();
我们无须在调用时编写删除照片文件的代码,仅仅将User对象删除就好,User对象会做相应的回调,执行相关的逻辑。
另外,在ActiveRecord模型对象执行回调方法时是有事务保证的,所以一旦照片文件删除失败,整个对象将执行回滚操作。如此,对于模型对象的调用者来说,这将变得更清晰。
使用教程
- etmvc框架介绍
- Hello,World经典示例
- 关于etmvc的配置
- 理解并使用控制器
- Action方法和控制器环境
- 关于etmvc的视图
- 扩展etmvc的视图
- 利用etmvc中的模型绑定简化Action方法的编写
- ORM-ActiveRecord基础
- 利用etmvc编写用户管理小例子
- ActiveRecord中同时访问多个数据库
- ActiveRecord中的关联
- etmvc中进行上传和下载
- etmvc和extjs结合分页例子
- etmvc的过滤器基础
- ActiveRecord中集成spring
- ActiveRecord中使用事务
- etmvc中使用环绕过滤器
- ActiveRecord中的数据类型映射
- ActiveRecord中的回调方法
- etmvc框架中的插件
- etmvc框架对URL路由的支持
- etmvc中使用环绕过滤器处理异常
- etmvc中的国际化处理
- etmvc框架集成spring