在Spring JPA中保存实体之前的业务逻辑

时间:2017-07-12 17:46:08

标签: spring spring-boot spring-data-jpa spring-data-rest

我正在使用Spring Boot 1.5.4,Spring Data REST,Spring JPA,Hibernate,我正在开发一个使用REST API的Angular客户端。

Spring Data REST有很多帮助,我正在尝试遵循最佳实践,因此存储库就像:

@Transactional
@PreAuthorize("isAuthenticated()")
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
}

并自动地我所有的save(),delete(),findXX()方法。那很好。

现在我想知道如何在保存实体之前需要自定义业务逻辑。假设我需要进行某种复杂的验证(涉及对数据库的查询),以及其他后台活动(可能是保存相关实体,更新相关对象等)。 我的目标是:

  1. 确保每次保存实体(从REST调用或JPA调用),在保存对象之前调用我的业务逻辑
  2. 避免创建自定义存储库,因为开发人员可以调用标准存储库来破坏我的规则
  3. 找到一种方法,以简单的方式做到这一点,以保持应用程序易于保持
  4. @RepositoryEventHandler对我来说是不够的,因为我希望确保我的业务逻辑总是得到验证,即使对方法的调用来自内部类。

    你能否建议我达到目标的最佳方法?

1 个答案:

答案 0 :(得分:6)

JPA有一堆entity listener

ngModel