Hibernate jpa 注解 @PrePersist 和 @PreUpdate

@PrePersist注解 和 @PreUpdate注解基本介绍

用于为相应的生命周期时间指定回调方法。可以用来在使用jpa的时记录一些业务无关的字段,比如最后更新时间等等。

注: 只能用来注解方法(且无返回 无参数) ,不能用于注解属性。

 

具体应用

1,如:(给一张表加上create_date,update_date这样的字段,想实现自动保存,更新这两个字段)

    private Date lastUpdateAt;

    @PrePersist
    public void recordUpdateTime(){
        lastUpdateAt = new Date();
    }

而在SpringBoot中已经封装好一个SuperEntity,

在我们的实体类中,直接继承BaseEntity,包含了id,createDate,modifyDate,数据库字段对应好即可。

 


2,实际应用:在持久化之前自动填充实体属性。

    @PrePersist
    @PreUpdate
    public void preTest() {
        if (getParent() != null) {
            setParentCodePath(Objects.toString(getParent().getParentCodePath(), "") + "/" + getParent().getCode());
            setParentCode(getParent().getCode());
        }

        if (CollectionUtils.isNotEmpty(getChildren())) {
            setChildrenSize(getChildren().size());
        }
    }


 

详细介绍

@PrePersist
可帮助我们在持久化之前自动填充实体属性。


可以用来在使用jpa的时记录一些业务无关的字段,比如最后更新时间等等。 
生命周期方法注解(delete没有生命周期事件)


@PreUpdate
用于为相应的生命周期事件指定回调方法。 
    该注释可以应用于实体类,映射超类或回调监听器类的方法。 用于setter

如果要每次更新实体时更新实体的属性,可以使用@PreUpdate注释。 
    使用该注释,您不必在每次更新用户实体时显式更新相应的属性。

preUpdate不允许您更改您的实体。 您只能使用传递给事件的计算的更改集来修改原始字段值。     
    如果你检查数据库,你会看到,Person实体已经更新,不会看到它们在$ persons变量,直到下次手动检索它们。

在刷新后,您必须执行的操作是从数据库中检索实体以查看其更新值:


参考来源于:

https://blog.csdn.net/sunrainamazing/article/details/80818754?utm_source=blogxgwz2

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值