Java 如何在Hibernate中为数据库更改添加侦听器?
如何在Hibernate中为行更改(如插入、更新、删除)添加侦听器。您可以使用。下面是一个记录更新的示例(直接取自Hibernate文档): 但这只适用于同一应用程序内的更改。其他更改未被跟踪。如果需要,应该使用数据库触发器。可以使用。下面是一个记录更新的示例(直接取自Hibernate文档):Java 如何在Hibernate中为数据库更改添加侦听器?,java,sql,hibernate,servlets,Java,Sql,Hibernate,Servlets,如何在Hibernate中为行更改(如插入、更新、删除)添加侦听器。您可以使用。下面是一个记录更新的示例(直接取自Hibernate文档): 但这只适用于同一应用程序内的更改。其他更改未被跟踪。如果需要,应该使用数据库触发器。可以使用。下面是一个记录更新的示例(直接取自Hibernate文档): 但这只适用于同一应用程序内的更改。其他更改未被跟踪。如果需要,您应该使用数据库触发器。您可以使用JPA侦听器@PostUpdate,@PostPersist,@PostRemove(这些可以跨ORM框架
但这只适用于同一应用程序内的更改。其他更改未被跟踪。如果需要,您应该使用数据库触发器。您可以使用JPA侦听器
@PostUpdate
,@PostPersist
,@PostRemove
(这些可以跨ORM框架移植),您可以查找JPA规范
调用PostPersist和postRemove回调方法用于
实体被持久化或删除后的实体。这些
回调也将在所有实体上调用,这些实体将被调用
操作是级联的
您可以使用JPA监听器
@PostUpdate
,@PostPersist
,@PostRemove
(这些监听器可以跨ORM框架移植),并且可以查找JPA规范
调用PostPersist和postRemove回调方法用于
实体被持久化或删除后的实体。这些
回调也将在所有实体上调用,这些实体将被调用
操作是级联的
看一看
public static class LoggingInterceptor extends EmptyInterceptor {
@Override
public boolean onFlushDirty(
Object entity,
Serializable id,
Object[] currentState,
Object[] previousState,
String[] propertyNames,
Type[] types) {
LOGGER.debugv( "Entity {0}#{1} changed from {2} to {3}",
entity.getClass().getSimpleName(),
id,
Arrays.toString( previousState ),
Arrays.toString( currentState )
);
return super.onFlushDirty( entity, id, currentState,
previousState, propertyNames, types
);
}
}