Framework/JPA
[JPA] JPA 매핑 - 기초
4Legs
2021. 3. 16. 01:04
객체 매핑하기
- @Entity : JPA가 관리할 객체
- @Id : DB의 PK와 매핑할 필드
- persistence.xml : JPA 속성 파일
- hibernate.dialect 속성에 각 DBMS 언어 지원
EntityManagerFactory
- JPA는 Persistence 클래스에서 설정 정보를 읽는다.
- 이후 Persistence에서 EntityManagerFactory를 생성한다.
- EntityManagerFactory는 EntityManager를 생성한다.
매핑 어노테이션
- @Column
- name : 필드와 매핑될 테이블의 칼럼 이름을 지정
- insertable, updatable : T/F 설정, 읽기 전용 여부를 지정
- nullable, unique
- length : 길이 제한
@Column(name = "USERNAME")
- @Temporal
- 시간과 관련된 매핑 (Date, LocalDatetime)
- @Enumerates
- Enum 타입 매핑을 지원한다.
- 기본 값은 EnumType.ORDINAL 이다. 이 설정에서는 Enum 순서대로 숫자가 매핑되는데, 이 중간에 새로운 필드가 추가되면 값들이 꼬일 확률이 높다.
- 따라서 EnumType은 STRING으로 설정할 것을 권장한다.
@Enumerated(EnumType.STRING)
- @Lob
- 컨텐츠의 길이가 너무 길어 바이너리 파일로 DB에 삽입할 경우에 사용
- CLOB(Char, String), BLOB(Binary) 매핑
- @Transient
- 해당 필드를 매핑하지 않는다.
식별자 매핑 어노테이션
- @Id
- @GeneratedValue(strategy = GenerationType.[타입])
- IDENTITY : 데이터베이스에 위임 (MYSQL)
- SEQUENCE : 시퀸스 오브젝트 사용, @SequenceGenerator 필요 (ORACLE)
- TABLE : 키 생성 테이블 사용, @TableGenerator 필요
- AUTO : 자동 지정
식별자 선택 전략
- PK의 조건 : 무결성, 유일성, 불변성
- 일반적으로 Long 형태의 대체 키를 생성해 사용
Reference
자바 ORM 표준 JPA 프로그래밍