일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 순서 보장
- 룸북
- js
- 리눅스
- StringUtils.hasText
- 타임리프와 스프링
- Intellij
- 함수 인자값 id
- 설정
- 시퀀스 조회
- it
- select
- JSON
- 추천 사이트
- 자바스크립트 인라인
- 하모니카 OS 5
- cmd
- 다른사람 프로젝트 수정전 가져야할 자세
- 스프링부트
- linux
- 프로젝트 클린
- 타임리프
- BindingResult
- 명령어
- #{..}
- 비밀번호 변경 명령어
- 개발시작전 자세
- 추천 프로그램
- Java
- Test 룸북 사용하기
- Today
- Total
웹개발 블로그
[JPA] 💡기본키, 시퀀스 어노테이션 (설정) 본문
@Entity
@SequenceGenerator(name="MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ",
initialValue = 1, // initialValue : 기본값 1
allocationSize = 1) // allocationSize :기본값 50
public class MemberPK {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="MEMBER_SEQ_GENERATOR" )
private Long id;
//💥웬만하면 String < Integer < Long을 사용하자, 나중에 타입변경하는 게 더 힘들고, 요새 성능이 좋아서 Long 타입으로 해도 괜춘!
시퀀스 설정
@SequenceGenrator를 사용하면 테이블마다 시퀀스를 따로 관리할 수 있다
(명시해주지 않으면 기본 hibernate_sequence를 사용하게 된다)
어노테이션
@SequenceGenerator(name="MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ",
initialValue = 1, // initialValue : 기본값 1
allocationSize = 1) // allocationSize :기본값 50 (시퀀스 한번 호출에 증가하는 수, 성능 최적화에 사용된다. 기본 50으로 하는게 적절하다)
public class MemberPK {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="MEMBER_SEQ_GENERATOR" )
private Long id;
}
SQL문으로 작성한다면? 아래와 위는 같은 결과이다.
create sequence member_seq start with 1 increment by 1
기본키 설정
@Id : 직접할당
@GenerateValue : 자동생성
@GeneratedValue(strategy = GenerationType.옵션)
[ AUTO ]
@GeneratedValue(strategy = GenerationType.AUTO) 가 기본( 방언(현재 DB) 에 따라 자동 지정됨)
-> @GeneratedValue만 써도 됨
[ IDENTITY ]
@GeneratedValue(strategy = GenerationType. IDENTITY )
- MySQL, PostgreSQL, SQL Server, DB2에서 사용
- em.persist() 시점에 즉시 INSERT SQL 실행 하고 DB에서 식별자를 조회
기본키 선택 전략
- 기본 키 제약 조건 : null 아님, 유일, 변하면 x
- 미래까지 만족해야함 - 대리키를 사용하자
- 권장 : Long형 + 대체키 or 회사에서 정해준 규칙을 활용해서 기본키를 지정하자
'◆ ORM > JPA - 중요' 카테고리의 다른 글
[JPA] Owner(주인)을 어떻게 정할까? (0) | 2024.08.06 |
---|---|
[JPA] 💡객체와 관계형 데이터베이스를 어떻게 매핑할까? (1) | 2024.07.30 |