Spring Framework
Spring jpa Column Generation Type 차이
iIxmont
2019. 1. 9. 21:33
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