객체와 테이블 매핑
@Entity 가 붙은 클래스는 JPA가 관리하며, 엔티티라 부른다.
JPA를 사용하여 테이블과 매핑할 클래스는 필수이다.
* 주의사항 *
- 기본 생성자 필수
- final 클래스, enum, interface, inner 클래스 사용X
name
JPA에서 사용할 엔티티 이름, 기본값은 클래스 이름을 그대로 사용한다. 기본값 사용 권장
@Table
엔티티와 매핑할 테이블 지정
- name
- catalog, schema, uniqueConstraints
출처: https://jwprogramming.tistory.com/47 [개발자를 꿈꾸는 프로그래머]
스키마 자동 생성이란
DDL을 애플리케이션 실행시점에 자동으로 생성하는 것을 의미하며, 테이블 중심에서 객체 중심의 개발이 가능하다.
하지만 개발단계에서만 사용해야 한다.
• 개발 초기 단계는 create 또는 update
• 테스트 서버는 update 또는 validate
• 스테이징과 운영 서버는 validate 또는 none
DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않는다.
nullable(DDL) : null 값의 허용 여부
unique(DDL) : @Table의 uniqueConstraints와 같다.
columnDefinition(DDL) : 데이터베이스 컬럼 정보를 직접 줄 수 있다. 필드의 자바 타입과 방언 정보를 사용해야 함
ex) varchar(100) default ‘EMPTY'
length(DDL) : 문자 길이 제약조건, String 타입에만 사용한다. 255
precision, scale(DDL) : BigDecimal 타입에서 사용한다(BigInteger도 사용할 수 있다).
precision은 소수점을 포함한 전체 자 릿수를, scale은 소수의 자릿수다. 아주 큰 수를 다룰 때 사용
precision=19,
scale=2
기본 키 매핑
@Entity
@SequenceGenerator(
name = “MEMBER_SEQ_GENERATOR",
sequenceName = “MEMBER_SEQ", //매핑할 데이터베이스 시퀀스 이름
initialValue = 1, allocationSize = 1)
• TABLE : 키 생성용 테이블 사용@Entity
@TableGenerator(
name = "MEMBER_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = “MEMBER_SEQ", allocationSize = 1)
• AUTO : 방언에 따라 자동 지정, 기본값
- AUTO_ INCREMENT는 데이터베이스에 INSERT SQL을 실행한 이후에 ID 값을 알 수 있음
기본 키 제약 조건: 변경 X, null X
권장 : Long형 + 대체키 + 키 생성 전략 사용
대체키 <-> 자연키( 예 :주민등록번호 )