JPA 4장 엔티티매핑

wisdom·2022년 8월 25일
0

백엔드 개발자라면?

목록 보기
37/42

김영한님의 자바 ORM 표준 JPA 프로그래밍 책으로 공부하면서 정리했습니다.

@Entity 적용 시 주의사항

  • 기본 생성자 필수
    - 파라미터가 없는 public 또는 protected 생성자
    - JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 한다.
    - 자바의 경우, 생성자가 하나도 없으면 public Mmeber(){} 와 같은 기본 생성자를 자동으로 만든다.
  • final 클래스, enum, interface, inner 클래스에는 사용할 수 없다.
  • 저장할 필드에 final을 사용하면 안된다.

기본키 매핑

JPA 가 제공하는 데이터베이스 기본 키 생성 전략

직접 할당
- 기본 키를 애플리케이션에서 직접 할당한다.
- em.persist() 로 엔티티를 저장하기 전에 애플리케이션에서 기본 키를 직접 할당하는 방법

 ```java
 Board board = new Board();
 board.setId("id1");
 em.persist(board)
 ```

자동 생성: 대리키 사용 방식

  • IDENTITY
    - 기본키 생성 전략을 데이터베이스에 위임한다.
    - 데이터를 데이터베이스에 INSERT 한 후에 기본 키 값을 조회할 수 있다.
  • SEQUENCE
    - 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다.
  • TABLE
    - 키 생성 테이블을 사용한다.
  • AUTO
    - 데이터베이스 방언에 따라 IDENTITY, SEQUENCE, TABLE 전략 중 하나를 자동으로 선택한다.
    - MySQL의 경우, IDENTITY 사용
    - AUTO 의 장점은 데이터베이스를 변경해도 코드를 수정할 필요가 없음

자동 생성 전략이 다양한 이유는?

  • 데이터베이스 벤더마다 지원하는 방식이 다르기 때문

권장하는 식별자 선택 전략

  • 데이터베이스 기본 키는 다음 3가지 조건을 모두 만족해야 함
    - 1. null값 X
    - 2. 유일해야 한다.
    - 3. 변해선 안된다.
  • 비즈니스에 의미가 있는 자연키보다는 임의로 만들어진 대리키(대체키)를 권장한다.
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글