본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의를 공부하며 작성한 개인 노트입니다.
@Entity, @Table@Column@Id@ManyToOne, @JoinColumn@Entity가 붙은 클래스 > JPA가 관리하는 엔티티
name@Entity(name = "")@Table - 엔티티와 매핑할 테이블 지정
name - 매핑할 테이블 이름catalog - 디비 카탈로그 매핑schema - 디비 스키마 매핑uniqueConstraints (DDL) - DDL 생성 시에 유니크 제약 조건 생성<property name="hibernate.hbm2ddl.auto" value=""/>
create - 기존 테이블 삭제 후 다시 생성create-drop - create + 종료시점에 테이블 DROPupdate - 변경분만 반영validate - 엔티티와 테이블이 정상 매핑되었는지만 확인none@Column - 컬럼 매핑@Temporal - 날짜 타입 매핑@Temporal(TemporalType.TIMESTAMP) - 날짜 타입 (Date, Time, TimeStamp)@Enumerated - enum 타입 매핑@Lob - BLOB, CLOB 매핑@Transient - 특정 필드를 컬럼에 매핑하지 않음 속성
name - 필드와 매핑할 테이블의 컬럼 이름insertable, updatable - 등록/변경 가능 여부nullable (DDL) - null 값의 허용 여부 설정unique (DDL) columnDefinition (DDL) - 디비 컬럼 정보를 직접 줌length (DDL) - 문자 길이 제약조건precision, scale (DDL)Enum 타입을 매핑할 때 사용
속성
value 날짜 타입 매핑 시 사용
속성
valueTemporalType.DATE - 날짜, 디비 date 타입과 매핑TemporalType.TIME - 시간, 디비 time 타입과 매핑TemporalType.TIMESTAMP - 날짜와 시간, 디비 timestamp 타입과 매핑디비 BLOB & CLOB 타입과 매핑
필드 매핑 X
@Id, @GeneratedValue
@Id @GeneratedValue
private Long id;
@GeneratedValue(strategy = GenerationType.IDENTITY)
IDENTITY - 기본 키 생성을 디비에 위임IDENTITY 전략 사용 시에는 em.persist() 시점에 즉시 INSERT SQL 실행 & 디비에서 식별자 조회IDENTITY는 모아서 INSERT하는 것은 불가능 > 큰 성능 차는 없음SEQUENCE - 디비 시퀀스 오브젝트 사용em.persist()를 실행하려면 pk가 필요하기 때문에 먼저 시퀀스 다음값을 가져옴@SequenceGenerator 필요@Entity
@SequenceGenerator(
name = "MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ", // 매핑할 디비 시퀀스 이름
initialValue = 1
allocationSize = 1)
public class Member {
@Id
@GeneratedVlaue(strategy = GenerationType.SEQUENCE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
}@SequenceGenerator 속성name - 식별자 생성기 이름sequenceName - 디비에 등록되어 있는 시퀀스 이름initialValue - 시퀀스 DDL 생성시 처음 시작하는 수 지정allocationSize - 시퀀스 한 번 호출에 증가하는 수catalog, schema - 디비 카탈로그/스키마 이름TABLE - 키 생성용 테이블 사용@TableGenerator (
name = "MEMBER_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = "MEMBER_SEQ", allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.TABLE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
}@TableGenerator 속성name - 식별자 생성기 이름table - 키 생성 테이블명pkColumnName - 시퀀스 컬럼명initialValue - 초기값allocationSize - 시퀀스 한 번 호출에 증가하는 수catalog, schema - 디비 카탈로그/스키마 이름uniqueConstraints (DDL) - 유니크 제약 조건 지정AUTO - 방언에 따라 자동 지정