记录操作历史记录方案 (1): Spring Data JPA 实现

在一些管理平台中,对一些数据的操作需要记录当前数据的版本,监管管理人员在平台的一些敏感操作。比如费率,通道等,谁调整了费率,切换了通道,每一次都要进行记录。

实现这种需要有很多方式

 

这边仅讨论JPA的实现,主要通过JPA的EntityListener注解实现:

情景: OrderRate 为Entity   OrderRateListener 为EntityListener  表名 为order_rate

@Table(name="order_rate")

@Entity

@EntityListeners(OrderRateListener .class)

public class OrderRate{

    private String updateBy;

    private  double rate;

    ...(get set)

}

 

public class OrderRate{

@Prepersist                     //完成save之前的操作。

public XXX(){}
@Preupdate                    //完成update之前的操作。

public XXX(){}
@PreRemove                 //完成remove之前的操作。

public XXX(){}
@Postpersist                  //完成save之后的操作。

public XXX(){}
@Postupdate                 //完成update之后的操作。

public XXX(){}
@PostRemovet             //完成remove之后的操作。

}

本文没有对注解实现进行讨论,后面会补在拓展

注意问题:

1.在Listener中无法直接使用注入注解获取Spring容器中对象,需要写静态方法来获取

2.Listener可能有很多重复代码,注意优化。

你可能感兴趣的:(SpringData,JPA,JPA,历史记录)