TIL - 23.01.03

0

TIL

목록 보기
46/126

스프링 팀프로젝트를 진행하던 중 오류는 아니지만 post 객체를 사용할 때 @Id를 사용하다가@GeneratedValue 어노테이션에 대해 조금 더 자세하게 알게되었다.

원래는 뒤에 @GeneratedValue(strategy=GenerationType.AUTO) 이것을 기본으로 배웠고 그냥 그렇게 사용했었다.
하지만 만약에 id가 1,2,3번인 post를 만들고, 그 뒤에 3번 post를 삭제하고난 후 다시 게시글을 작성하게된다면
다음 게시글은 id값이 4인 post가 생성된다.

이것이 오류가 발생하는 문제는 아니지만, 의도를 보았을 때 게시글마다 id값이 주어질 때 빠른 번호부터 비어있는 숫자를 지정하고 싶을 때는 @@GeneratedValue(strategy=GenerationType.IDENTITY)를 사용하는 것이 바람직하다.

참고
1. AUTO : (persistence provider) 특정 DB에 맞게 자동 선택
2. IDENTITY : DB의 identity 컬럼을 이용
3. SEQUENCE : DB의 sequence 컬럼을 이용
4. TABLE : 유일성이 보장된 데이터베이스 테이블을 이용

강의에서는 그저 'AUTO를 사용하면 됩니다.' 라고 넘어갔던 내용인데, 직접 코드를 사용해보면서 구글링을하며 알아가다보니
차라리 강의 중에 설명해주는것보다 훨씬 기억에 남는거같다.

0개의 댓글