Envers를 사용하여 데이터 변경 로그를 구성하려면 다음 세 가지 단계를 따르면 됩니다:
-
엔티티 클래스에 변경 로그를 기록할 수 있도록
@Audited
어노테이션을 추가합니다. 이 어노테이션은 해당 엔티티의 데이터 변경을 추적하고 로그를 생성합니다. -
변경 로그를 저장할 테이블을 생성하기 위해
hibernate.hbm2ddl.auto
속성을update
로 설정하거나, 직접 테이블을 생성합니다. 이렇게하면 엔티티와 관련된 변경 로그가 저장됩니다. -
변경 로그를 쿼리하고 관리하기 위해 Hibernate Session을 사용합니다. 변경 로그를 쿼리하려면
AuditReader
인터페이스를 사용하여 필요한 정보를 검색할 수 있습니다. 또한, 로그를 관리하기 위해AuditQuery
를 사용하여 보고서를 생성하거나 필터링 할 수도 있습니다.
아래는 변경 로그를 구성하는 예제 코드입니다:
@Entity
@Audited
public class Product {
@Id
private Long id;
private String name;
private double price;
// getter and setter methods
}
// 변경 로그를 쿼리하기 위한 예제 코드
AuditReader reader = AuditReaderFactory.get entityManager().createAuditReader();
List<Number> revisions = reader.getRevisions(Product.class, productId);
for (Number revision : revisions) {
Product revisionEntity = reader.find(Product.class, productId, revision);
// 로그 정보 출력 또는 처리
}
이 예제에서는 Product
엔티티를 사용하여 @Audited
어노테이션을 통해 변경 로그를 추적합니다. AuditReader
를 사용하여 변경 로그를 쿼리하고 find
메서드를 사용하여 해당 리비전의 엔티티 객체를 가져옵니다.
Hibernate Envers의 자세한 사용법에 대한 자세한 내용은 Hibernate Envers 공식 문서를 참조하시기 바랍니다.
참고 문서: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#envers
Envers는 데이터 변경 로그를 구성하고 관리하는데 매우 유용한 도구이며, 변경 내역 기록과 복구, 감사 및 보고서 생성 등과 같은 다양한 용도로 활용될 수 있습니다.