java - JPA @EntityListeners、@PrePersist 和 Spring @RepositoryEventHandler、@HandleBeforeSave 之间的区别

标签 java spring hibernate jpa spring-data

我做了一些研究,但没能找到两者之间的区别

JPA @EntityListeners , @PrePersist 

Spring @RepositoryEventHandler, @HandleBeforeSave

谢谢。

最佳答案

@HandleBeforeSave 仅在通过 Spring Data 存储库保存实体时有效。如果您使用 EntityManager::persist() 并且如果您使用 JPARepository::save()@PrePersist 将被触发,因为它调用 persist .

@RepositoryEventHandler+@HandleBeforeSave 的好处是您的@HandleBeforeSave 方法是在 spring bean 中定义的,因此您可以进行交互与其他 Spring Bean 。 @EntityListeners@PrePersist在J2SE环境下运行时只能访问当前Entity的状态。在 J2EE 中,您可以将 @Inject bean 放入 @EntityListeners 中,因为 JPA 子系统和 CDI 都由同一个容器管理。

关于java - JPA @EntityListeners、@PrePersist 和 Spring @RepositoryEventHandler、@HandleBeforeSave 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44585161/

相关文章:

java - 如何从数组中删除一些元素?

java - 正则表达式不匹配尾随文本

java - 如何使用 Selenium Java 设置 <pre> html 标签的值?

spring - 使用 Spring Data JPA 从数据库设置 transient 值

java - Hibernate 搜索初学者问题

java - 结果集到多 HashMap

java - Spring 与 Java 反射

java - Spring Security配置问题

java - Hibernate.initialize(list) 与 setFetchMode

java - Hibernate DB2 ROW_NUMBER() 错误