사용자 도구

사이트 도구


java:hibernate:envers

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
java:hibernate:envers [2019/01/25 08:19]
kwon37xi
java:hibernate:envers [2019/06/04 11:03]
kwon37xi
줄 3: 줄 3:
   * Hibernate/JPA Entity의 변경 사항을 추적할 수 있게 별도 테이블에 변경 사항을 자동 저장해준다.   * Hibernate/JPA Entity의 변경 사항을 추적할 수 있게 별도 테이블에 변경 사항을 자동 저장해준다.
   * [[https://spring.io/projects/spring-data-envers|Spring Data Envers]] Hibernate Envers 의 변경 사항을 쉽게 조회할 수 있게 해준다.   * [[https://spring.io/projects/spring-data-envers|Spring Data Envers]] Hibernate Envers 의 변경 사항을 쉽게 조회할 수 있게 해준다.
 +
 +===== REV 를 long 으로 변경해야한다 =====
 +  * 이력이 쌓일 때 이력의 값을 ''REV''라는 컬럼으로 저장하는데 이 값이 ''int'' 타입이다.
 +  * 이 경우 약 20억 이상의 이력이 쌓이면 곧바로 오류가 발생하게 된다.
 +  * ''REVINFO'' 테이블의 ''REV'' 컬럼과, 각 이력 테이블의 ''REV'' 컬럼을 모두 ''Long'' type 즉 ''BIGINT''로 변경해야만 한다.
 +  * ''@RevisionEntity''를 커스텀으로 새로 만들어야 한다.
 +<code java>
 +@Entity
 +@RevisionEntity
 +public class CustomRevisionEntity implements Serializable {
 +  @Id
 +  @GeneratedValue
 +  @RevisionNumber
 +  private long rev;
 +  @RevisionTimestamp
 +  private long timestamp;
 +  /* provide getter/setters */
 +}
 +</code>
 +  * [[https://github.com/hibernate/hibernate-orm/blob/master/hibernate-envers/src/main/java/org/hibernate/envers/DefaultRevisionEntity.java|DefaultRevisionEntity.java''를 복사해서 ''REV''만 ''long''으로 변경하면 된다.
 +  * [[https://stackoverflow.com/questions/38589065/hibernate-envers-rev-column-data-type-is-integer|Hibernate Envers rev column data type is Integer]]
 +  * [[https://hibernate.atlassian.net/browse/HHH-6615|[HHH-6615] int type in Revision number - Hibernate JIRA]]
 +
 +===== Custom @RevisionEntity =====
 +  * ''@RevisionEntity''를 커스터마이징 하여 원하는 데이터를 추가 저장할 수도 있다.
 +  * [[https://thoughts-on-java.org/hibernate-envers-extend-standard-revision/|Hibernate Envers - Extend the standard revision]]
  
 ===== 참조 ===== ===== 참조 =====
java/hibernate/envers.txt · 마지막으로 수정됨: 2021/04/29 16:53 저자 kwon37xi