2015-10-07 16 views
5

Tôi sử dụng Spring Data Rest trên JPA ánh xạ.REST dữ liệu mùa xuân - sự khác biệt giữa @PrePersist và @HandleBeforeCreate?

JPA cung cấp chú thích @PrePersist cho các phương thức được gọi trước khi sự tồn tại của thực thể en trong DB.

Nghỉ ngơi dữ liệu mùa xuân cung cấp chú thích @HandleBeforeCreate cho phương thức được gọi khi bắt sự kiện tạo đối tượng.

Điều này có vẻ tương đương với tôi. Khi nào tôi nên sử dụng một và khi nào tôi nên sử dụng cái kia?

Trả lời

5
  1. @HandleBeforeCreate chỉ được gọi khi yêu cầu REST đến nhưng @PrePersist được gọi trong suốt vòng đời của thực thể. Vì vậy, nếu đường dẫn cuộc gọi của bạn không thông qua REST (ví dụ bằng cách gọi trình quản lý thực thể trực tiếp hoặc do các hoạt động xếp tầng nội bộ của JPA impl), bạn không thể bắt sự kiện bằng @HandleBeforeCreate.
  2. Kể từ khi @HandleBeforeCreate được gọi là mùa xuân, thật dễ dàng để đặt nó vào một hạt đậu và tận hưởng tất cả các tính năng mùa xuân cho nó. Vòng đời của người nghe thực thể được quản lý bởi JPA impl vì vậy nó thường cần một số thủ thuật để được kết nối với hệ sinh thái Spring.

Ví dụ: tôi sử dụng @HandleBeforeCreate thay vì @PrePersist cho mục đích như kiểm tra bảo mật. Vì mục 1, tôi chỉ muốn kiểm tra bảo mật cho các hoạt động nghỉ ngơi tiếp xúc và do mục 2, tôi có thể dễ dàng sử dụng chú thích @Secured hoặc @PreAuth với các phương pháp của tôi để thực hiện kiểm tra.

+0

cảm ơn ví dụ này! –

Các vấn đề liên quan