스프링 팀프로젝트를 진행하던 중 오류는 아니지만 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를 사용하면 됩니다.' 라고 넘어갔던 내용인데, 직접 코드를 사용해보면서 구글링을하며 알아가다보니
차라리 강의 중에 설명해주는것보다 훨씬 기억에 남는거같다.