我做了一些研究,但没能找到两者之间的区别
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/