JAVA/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 프로그래밍

'JAVA > JPA' 카테고리의 다른 글

[JPA] 영속성 컨텍스트 (Persistence Context) - (1)  (0) 2021.03.30
[JPA] 상속관계 매핑  (0) 2021.03.30
[JPA] 다양한 연관관계  (0) 2021.03.19
[JPA] 연관관계 매핑  (0) 2021.03.16
[JPA] JPA 소개  (0) 2021.03.16