私の spring-maven-jpa ベースの Web アプリでは、一部のデータを DB に格納する直前に暗号化し、DB からプールするときに復号化する必要があります。
そこで私は自分の暗号化サービスを作成しました。
オブジェクト指向の視点から、各エンティティは自分自身を保護および保護解除する方法を知っておく必要があると思います。これにより、暗号化装置を抽象的な基本エンティティに挿入することになります。
public abstract class BaseEntity {
@Autowired(required = true)
protected SecurityProvider securityService;
public BaseEntity() {
}
/**
* secure the entity (if required) using the securityService
*/
@PrePersist
@PreUpdate
protected abstract void secure();
/**
* un-secure the entity (if required) using the securityService
*/
@PostLoad
protected abstract void unsecure();
/*--- Getters & Setters ---*/
public SecurityProvider getSecurityService() {
return securityService;
}
public void setSecurityService(SecurityProvider securityService) {
this.securityService = securityService;
}
}
ご覧のとおり、そのために @PrePersist、@PreUpdate、および @PostLoad コールバックをリレーしようとしています。
現時点では、暗号化プログラムのインジェクションに問題があるため、最後までテストすることはできません。
問題は、それは良い習慣のように見えるかということです。改善またはより良い方法を提案できますか?
アップデート:
いくつかのテストを実行した後、 @PrePersist および @PreUpdate アノテーションが正常に機能し、各エンティティが DB に書き込まれる直前に暗号化されるように見えます。しかし、 @PostLoad は期待どおりに機能していないようです。DB からエンティティをプールするたびに実行されると思っていましたが、何らかの理由でメソッドが呼び出されません。@PostLoad の考え方が間違っていましたか?