私はアプリケーション監査に取り組んでおり、作成、更新、および削除をキャプチャするためにHibernate Envers 4.3.11を正常に接続しましたが、エンティティの読み取りを監査するためのドキュメントは見つかりません。EnversでHibernateの読み取りを監査する方法は?
これはEnversで可能ですか、それともlog4jなどに頼るのが最善でしょうか?
私はアプリケーション監査に取り組んでおり、作成、更新、および削除をキャプチャするためにHibernate Envers 4.3.11を正常に接続しましたが、エンティティの読み取りを監査するためのドキュメントは見つかりません。EnversでHibernateの読み取りを監査する方法は?
これはEnversで可能ですか、それともlog4jなどに頼るのが最善でしょうか?
私はそれが不可能だと信じています。同様のユースケースがあり、私たちはサービス上の監査記録を生成するためにインターセプターを使用します。
はい、Hibernate Enversでは、エンティティの読み取りを監査することができます。 ここでは、1番目のリビジョンのレコードを監査テーブルから読み取る例を示します。
/*Audit Reader*/
public AuditReader getAuditReader() {
return AuditReaderFactory.get(getCrntSession());
}
/*The method to read a record from an entity*/
Integer revisionNumber = (Integer) getAuditReader().createQuery()
.forRevisionsOfEntity(Employee.class, false, true)
.addProjection(AuditEntity.revisionNumber().min())
.getSingleResult();
AuditReader reader = getAuditReader();
Employee emp=reader.findRevision(Employee.class, (Number)revisionNumber);
/* and if Employee has an createdDate record , we can read it using below*/:
System.out.println(emp.getCreatedDate());
これは、以前に監査されたレコードを見つけるようなものです。エンティティの読み取りごとに監査テーブルにレコードを格納したい。私は研究しており、エンバーがこの操作をサポートするとは思われません。おそらく要求を傍受し、ファイルやデータベースに直接ログする必要があるでしょう。 – wsams