在一些管理平台中,对一些数据的操作需要记录当前数据的版本,监管管理人员在平台的一些敏感操作。比如费率,通道等,谁调整了费率,切换了通道,每一次都要进行记录。
实现这种需要有很多方式
这边仅讨论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可能有很多重复代码,注意优化。