@Id?
- 테이블의 PK(Primary Key)역할을 한다는 것을 나타낸다.
- 속성에 직접 @Id를 붙여주면 실행시점에 객체 필드를 통해 접근하게 하는 것이며,
- getter를 이용하려면 getter에 @Id를 붙여준다.
- 속성에 부여하게되면 getter/setter 없이도 작업이 가능하다.
그러나 setter에 @Id를 붙이면 예외가 발생한다
@GeneratedValue
: 주 키의 값을 위한 자동 생성 전략을 명시하는데 사용
선택적 속성으로 generator와 strategy가 있다
strategy
: persistance provider가 엔티티의 pk를 생성할 때 사용하며 디폴트값은 AUTO이다
generator
: 주로 SequenceGenerator나 TableGenerator 어노테이션에서 명시된 pk생성자를 재사용시 쓰인다
디폴트 값은 공백문자("")이다
PK 생성 전략으로 JPA가 지원하는 것은 아래 4가지이다
1. AUTO : 특정 DB에 맞게 자동 선택(persistence provider가 지정)
2. IDENTITY : DB의 identity 컬럼을 이용
3. SEQUENCE : DB의 시퀀스 컬럼을 이용
4. TABLE : 유일성이 보장된 DB테이블을 이용
AUTO와 SEQUENCE는 실제 INSERT쿼리가 일어나기 전 다음 쿼리를 통해 주키를 가져온다
AUTO외에는 대상 DB에 대한 지식이 요구됨으로 아하! 정도로만 알고 넘어가자
위 네가지 생성전략의 내장 Generator 이름은 이렇다
1.native : AUTO
2.identity : IDENTITY
3.sequence : SEQUENCE
4.TABLE에 대응하는 내장 Generator는 없음
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long Id;
아마 대부분이 이러한 코드의 아래 부분 때문에 왔을 것이라고 본다.
@GeneratedValue(strategy=GenerationType.AUTO)
한줄 요약하자면 자동으로 증가시켜준다
DB에서 몇번째 값인지 기입하기 위해 대부분 위와 같은 코드를 Id에 입력한다
'I LEARNED > TIL' 카테고리의 다른 글
WIL_2 CORS (0) | 2022.08.15 |
---|---|
TIL_연관관계 주인 정하기 (0) | 2022.08.15 |
TIL_@Column #Spring (0) | 2022.08.07 |
TIL_@RequestMapping #Spring (0) | 2022.08.06 |
TIL_ 스프링 IOC 컨테이너 -빈 사용방법 (0) | 2022.08.05 |
댓글