[java] Hibernate Envers에서 변경 이력을 관리하기 위해 필요한 데이터베이스 테이블은 어떤 구조를 가지나요?
일반적으로 Hibernate Envers에서 생성되는 테이블은 다음과 같은 구조를 가집니다:
- 테이블이름_AUD: 원본 테이블의 변경 이력을 저장하기 위한 테이블입니다. 이 테이블은 원본 테이블의 모든 컬럼을 포함하며, 추가적으로 변경 이력에 대한 정보를 저장하는 컬럼들을 추가합니다.
- REV: 변경 이력의 식별자로 사용되는 숫자입니다.
- REVTYPE: 변경 이력의 유형을 나타내는 값으로, 삽입, 수정, 삭제 등의 유형을 나타냅니다.
- AUDIT_ID: 각 변경 이력의 고유 식별자입니다.
- 원본 테이블의 컬럼들: 원본 테이블과 동일한 구조를 가지며, 변경 이력 시점에서의 컬럼 값들이 저장됩니다.
예를 들어, “User”라는 테이블을 Hibernate Envers로 관리하기 위해 필요한 테이블은 “User_AUD”가 됩니다. “User_AUD” 테이블은 “User” 테이블의 모든 컬럼을 포함하고 있으며, 추가적인 변경 이력 관리를 위한 컬럼들을 가지게 됩니다.
Hibernate Envers는 변경 이력을 저장하고 조회하는데 편리한 기능을 제공하며, 데이터베이스 테이블의 구조를 자동으로 생성하여 변경 이력을 관리할 수 있게 합니다.
참고 자료:
- Hibernate Envers 문서: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#envers