类似:Jquery的ajax,有成功回调和失败回调..
假如:我想利用Hibernate操作删除数据.
当我调用session.delete,我需要告诉用户是否成功?
要怎么做啊?
类似:Jquery的ajax,有成功回调和失败回调..
假如:我想利用Hibernate操作删除数据.
当我调用session.delete,我需要告诉用户是否成功?
要怎么做啊?
返回值都是void,如果发生增删改的失败,会抛出HibernateException,根据Hibernate框架设计,用户应该用try... catch...处理,必要时进行事务的回滚(rollback)。
(一)支持interceptor、event listener、jpa callback
1、interceptor,可以参考hibernate-core-5.0.12.Final-sources.jar!/org/hibernate/EmptyInterceptor.java
有onSaveonDeleteonLoadfindDirtypreFlushpostFlush等
2、event listener
查看AbstractReassociateEventListener的子类
3、jpa callback
支持@PrePersist,@PreRemove,@PostPersist,@PostRemove,@PreUpdate,@PostUpdate,@PostLoad
详情见hibernate-user-guide
(二)对于事务的回调
可以使用registerSynchronization方法,注册TransactionSynchronizationAdapter的子类,重新想要的方法,比如
public void beforeCommit(boolean readOnly) {
}
public void beforeCompletion() {
}
public void afterCommit() {
}
public void afterCompletion(int status) {
}
其中status为
/** Completion status in case of proper commit */
int STATUS_COMMITTED = 0;
/** Completion status in case of proper rollback */
int STATUS_ROLLED_BACK = 1;
/** Completion status in case of heuristic mixed completion or system errors */
int STATUS_UNKNOWN = 2;
(三)针对是否操作成功
不抛异常,一般就是成功
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
你可以看下 hibernate 的api, 他的 delete, save, update 都是没有返回值的, 你可以判断是否抛异常了