보통 JPA를 이용할 때 인강을 들으면 무조건

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

이 두개를 써준다. 왜 써줄까?

먼저 @Id에 대한 설명을 보자.

@Id를 붙이면 JPA에서 자동으로 PK라고 인식을 해 준다. 그리고 래퍼 타입, date class, bigdecimal 등으로 써 주어야 함을 강제한다.

@GeneratedValue를 써 주면 우리가 ++sequence를 해 주지 않아도, Auto-Increment 덕에 알아서 하나씩 올라간다.

Generation Type에는  Identity, Auto, Sequence등이 있는데, 보통은 겹치지 않는 Identity를 사용한다.

Auto를 사용하게 되면 다음과 같은 일이 일어난다.

게시글, 댓글, 댓글 순으로 게시물을 저장할 경우 우리는 보통

게시글1, 댓글1, 댓글2로 가져가길 원하지만, Auto 타입을 주면

게시글1, 댓글2, 댓글3이라는 문제가 일어난다.

 

나중에 테이블 전략과 db의 입장에서 다시 설명하기로 하고, 오늘은 이렇게 넘어가도록 하자.

'DB > JPA' 카테고리의 다른 글

Join과 fetch join, 알고 쓰자.  (0) 2023.03.31
QueryDsl Custom Repository 명명 규칙  (0) 2023.03.31

+ Recent posts