[java] Hibernate Envers를 사용하여 변경 이력을 통해 데이터의 상태 변화를 시각화할 수 있나요?

Hibernate Envers를 사용하여 변경 이력을 시각화하려면 몇 가지 단계를 따라야 합니다. 먼저, 엔티티 클래스에 @Audited 어노테이션을 추가하여 변경 이력을 추적할 엔티티를 지정해야 합니다. 그런 다음, 해당 엔티티의 변경 이력을 조회하고 관리하기 위해 AuditReader를 사용해야 합니다.

다음은 Hibernate Envers를 사용하여 변경 이력을 시각화하는 간단한 예제입니다:

@Entity
@Audited
public class Product {
    @Id
    private Long id;
    
    private String name;
    
    // getters and setters
}

// 변경 전 상태
Product product = new Product();
product.setId(1);
product.setName("Laptop");
entityManager.persist(product);

// 변경 후 상태
product.setName("Notebook");
entityManager.merge(product);

// 변경 이력 조회
AuditReader auditReader = AuditReaderFactory.get(entityManager);
List<Number> revisions = auditReader.getRevisions(Product.class, 1);
for (Number revision : revisions) {
    Product revisionEntity = auditReader.find(Product.class, 1, revision);
    System.out.println("Revision: " + revision);
    System.out.println("Name: " + revisionEntity.getName());
}

위의 예제에서는 Product 엔티티를 변경 이력을 추적하기 위해 @Audited 어노테이션으로 표시하였습니다. 변경 전과 변경 후 상태를 저장한 뒤, AuditReader를 사용하여 변경 이력을 조회하고 출력합니다.

Hibernate Envers의 자세한 내용과 사용 방법에 대해서는 Hibernate Envers 공식 문서를 참조하시기 바랍니다. [^1^]