[ JPA ] 엔티티 매핑

유기훈·2022년 9월 25일
0

JPA

목록 보기
3/13
post-thumbnail

엔티티 매핑

  • 객체와 테이블 매핑: @Entity, @Table
  • 필드와 컬럼 매핑: @Column
  • 기본 키 매핑: @Id
  • 연관관계 매핑: @ManyToOne, @JoinColumn

@Entity

  • @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.
  • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)

데이터베이스 스키마 자동 생성

  • DDL을 애플리케이션 실행 시점에 자동 생성
  • 이렇게 생성된 DDL은 개발 장비에서만 사용
  • 생성된 DDL은 운영서버에서는 다듬은 다음에 사용 권장

데이터베이스 스키마 자동 생성 - 주의

  • 개발 초기 단계는 create 또는 update
  • 테스트 서버는 update 또는 validate
  • 스테이징과 운영 서버는 validate 또는 none
    - 테스트 서버 부터와 운영서버는 none으로 하는게 좋음

권장하는 식별자 전략

  • 기본 키 제약 조건: null아님, 유일, 변하면 안된다.
  • 미래까지 이 조건을 만족하는 자연키는 찾기 어렵다. 대리키(대체키)를 사용하자.
  • 권장:Long형 + 대체키 + 키 생성전략 사용

주의

generatedValue를 사용하는 엔티티는 다른 영속성 컨텍스트들과는 다드게 em.persist()하면 바로 db에 쿼리가 날라간다. 하지만 SEQUENCE전략을 사용하면 call next value for ENTITY_SEQ라는 쿼리를 db에 날려서 다음 key값을 가져와서 넣어준 다음 나중에 commit 할 때 insert쿼리가 날라간다.

profile
개발할 수 있어 감사하다

0개의 댓글