[java] Hibernate Envers를 사용하여 변경 이력을 통해 데이터 변경의 원인을 추적할 수 있나요?
Hibernate Envers를 사용하기 위해 다음과 같이 설정해야 합니다.
-
Maven 또는 Gradle에서 Hibernate Envers 종속성을 추가합니다.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> <version>{version}</version> </dependency>
-
엔티티에
@Audited
어노테이션을 추가하여 변경 이력을 추적할 엔티티임을 지정합니다.@Audited @Entity public class YourEntity { // ... }
-
Hibernate Envers를 구성하기 위해
persistence.xml
파일을 수정합니다.<properties> <!-- ... --> <property name="hibernate.ejb.event.post-insert" value="org.hibernate.envers.event.spi.EnversPostInsertEventListenerImpl" /> <property name="hibernate.ejb.event.post-update" value="org.hibernate.envers.event.spi.EnversPostUpdateEventListenerImpl" /> <property name="hibernate.ejb.event.post-delete" value="org.hibernate.envers.event.spi.EnversPostDeleteEventListenerImpl" /> <property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.spi.EnversPreCollectionUpdateEventListenerImpl" /> <property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.spi.EnversPreCollectionRemoveEventListenerImpl" /> <property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.spi.EnversPostCollectionRecreateEventListenerImpl" /> </properties>
이제 Hibernate Envers를 사용하여 변경 이력을 추적할 수 있습니다. 변경 이력을 검색하기 위해 다음과 같은 메소드를 사용할 수 있습니다.
AuditReader#getRevisions(Class, Object)
: 클래스와 식별자를 기반으로 엔티티의 변경 이력을 검색합니다.AuditReader#getRevision(Number)
: 변경 이력 식별자를 기반으로 변경 이력을 검색합니다.AuditReader#getRevisionNumberForDate(Date)
: 변경 이력 날짜를 기반으로 변경 이력 식별자를 검색합니다.
여기서는 Hibernate Envers의 기본적인 사용 방법을 알아봤습니다. Hibernate Envers는 데이터 변경 이력을 추적하고 관리하는 데 매우 유용한 도구입니다. 자세한 내용은 Hibernate Envers의 공식 문서를 참조하십시오.