gpt4 book ai didi

java - Spring Data REST - @PrePersist 和@HandleBeforeCreate 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:49 26 4
gpt4 key购买 nike

我在 JPA 映射上使用 Spring Data Rest

JPA 提供了@PrePersist 注解,用于在数据库中实体持久化之前调用的方法。

Spring Data Rest 为捕获实体创建事件时要调用的方法提供了 @HandleBeforeCreate 注解。

这对我来说似乎相当。什么时候应该使用一个,什么时候应该使用另一个?

最佳答案

  1. @HandleBeforeCreate 仅在 REST 请求传入时调用,但在实体生命周期期间调用@PrePersist。因此,如果您的调用路径不是通过 REST(例如通过直接调用实体管理器或由于 JPA impl 的内部级联操作),您将无法使用 @HandleBeforeCreate 捕获事件。
  2. 由于@HandleBeforeCreate 是由 Spring 调用的,因此很容易将其放入 bean 中并享受所有 Spring 功能。实体监听器的生命周期由 JPA impl 管理,因此通常需要一些技巧才能连接到 Spring 生态系统。

例如,我使用@HandleBeforeCreate 而不是@PrePersist 进行安全检查。由于第 1 项,我只想检查公开的剩余操作的安全性,并且由于第 2 项,我可以轻松地在我的方法中使用 @Secured 或 @PreAuth 注释来进行检查。

关于java - Spring Data REST - @PrePersist 和@HandleBeforeCreate 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com