Lewis's Tech Keep
[Spring Boot] Spring Hibernate Envers REV INFO 타입 변경 본문
Spring Hibernate Envers 사용 시 아무것도 설정하지 않고 사용 시 revisionId와 revision timestamp를 저장하는 revinfo라는 테이블이 있는데, 해당 테이블의 revisionId 값은 integer로 저장된다.
Dev 환경이라면 괜찮지만 Production 환경에서 Envers를 사용하고 있고 자주 기록하는 서버라면 Integer MAX값인 21억을 넘는 것은 현실이 될 수도 있다.
이런 경우 테이블이 이미 생성되어 있는 경우 마이그레이션과 함께
아래와 같이 CustomRevisionEntity를 준비해서 변경해주는 것이 좋다.
-- table seq type 변경
ALTER TABLE revinfo ALTER COLUMN rev TYPE BIGINT USING rev::bigint;
-- 연관 column rev id type 변경
ALTER TABLE table_a_aud ALTER COLUMN rev TYPE BIGINT USING rev::bigint;
ALTER TABLE table_b_aud ALTER COLUMN rev TYPE BIGINT USING rev::bigint;
ALTER TABLE table_c_aud ALTER COLUMN rev TYPE BIGINT USING rev::bigint;
-- postgresql 경우 seq 로 id 관리하고 있기 때문에 해당 sequence type 변경
ALTER SEQUENCE revinfo_rev_seq AS BIGINT;
@Entity
@Getter
@Table(name = REVISION_TABLE)
@RevisionEntity
public class CustomRevisionEntity implements Serializable {
@Id
@RevisionNumber @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long rev;
@RevisionTimestamp
private long revTimestamp;
}
'Java > Spring' 카테고리의 다른 글
[Ratelimiter] 처리율 제한 장치 (0) | 2024.07.08 |
---|---|
[Spring Boot][JDK21] virtual threads 이슈 (0) | 2024.06.27 |
[Spring] h2를 이용한 테스트 시 user 테이블 테스트를 실패했을 때 확인 (1) | 2023.04.25 |
Comments