본문 바로가기
Spring Framework

Spring jpa Column Generation Type 차이

by 자유코딩 2019. 1. 9.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
@Entity
@Data
@Table(name="painting")
public class Painting {
 
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "paintingId")
    private Long paintingId;
 
    @Column(name = "painting_meta", columnDefinition = "text")
    private String painting_meta;
 
}
cs

 

자 위의 코드를 보자.

 

GenerationType.IDENTITY  라고 적혀있다.

 

GenerationType.SEQUENCE 로 변경하면 컬럼 값이 10씩 커질 것이다.

 

id = 10 , 20 , 30 , 40 , 50 .... 이런 식이다.

 

GenerationType.AUTO 로 변경하면 1,2,3,4,5,6,7 이렇게 증가한다.

 

그런데 여기서 한가지 문제가 있다.

 

보통의 경우 1,2,3,4,5로 증가한다.

여기서 @PostConstruct 애너테이션을 붙이고 여러 개의 테이블에 실행을 하게 되면 잘못된 결과가 나타난다.

 

예를 들어서 다른 데이터베이스 테이블이 더 있다고 가정할때

 

자유게시판 글은 1

 

댓글은 갑자기 2부터 시작

 

공지사항은 3부터 시작 될 수 있다.

 

그럴때를 막기위해 GenerationType.IDENTITY 를 쓰면 된다.

 

이렇게 하면

 

자유 게시판 1

 

댓글 게시판 1

 

공지사항 1

 

이렇게 모두 1로 값이 들어갈 수 있다.

 

추가적으로 application.properties에 아래 항목을 작성한다.

spring.jpa.hibernate.use-new-id-generator-mappings=false

 

댓글