변경 이력을 관리하기 위해 Hibernate Envers를 사용할 수 있습니다. Hibernate Envers는 Hibernate를 기반으로하여 데이터베이스에 대한 변경 이력을 추적하고 버전 관리를 제공하는 라이브러리입니다. 이를 통해 데이터의 변경 이력을 쉽게 확인하고 복구할 수 있습니다.
먼저, Hibernate Envers를 프로젝트에 추가해야 합니다. Maven을 사용하고 있다면 pom.xml 파일에 다음 종속성을 추가하세요.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>{Hibernate 버전}</version>
</dependency>
Hibernate Envers를 추가한 후에는 엔티티 클래스에 변경 이력을 추적하고자 하는 필드에 @Audited
어노테이션을 추가하세요. 이렇게 하면 해당 필드의 변경 이력이 추적됩니다.
@Entity
@Audited
public class Employee {
@Id
private Long id;
@Audited
private String name;
// ... 생략 ...
}
이제 데이터베이스에 변경 이력을 저장할 준비가 되었습니다. Hibernate Envers는 자동으로 생성된 하위 테이블에 변경 이력을 저장합니다. 이 하위 테이블에는 REVINFO
, employee_AUD
등의 접두사가 붙은 테이블이 생성됩니다.
변경 이력을 조회하려면 AuditReader
인터페이스를 사용합니다. AuditReader
를 사용하여 특정 엔티티의 이전 버전을 조회하거나 특정 시점의 변경 이력을 확인할 수 있습니다.
AuditReader reader = AuditReaderFactory.get(entityManager);
Employee employee = reader.find(Employee.class, id, revisionNumber);
위의 코드에서 entityManager
은 엔티티를 관리하는 EntityManager입니다. revisionNumber
는 조회하려는 변경 이력의 버전 번호입니다.
이 외에도 Hibernate Envers는 변경 이력을 원하는 방식으로 커스텀하는 기능을 제공합니다. 자세한 내용은 Hibernate Envers 공식 문서를 참조하시기 바랍니다.
참고 링크: