JPA - 엔티티 매핑

DevSeoRex·2022년 10월 21일
0
post-thumbnail
post-custom-banner

엔티티 매핑

객체와 테이블 매핑시 사용하는 Annotation

  • @Entity, @Table

필드와 컬럼을 매핑시 사용하는 Annotation

  • @Column

기본 키를 매핑시 사용하는 Annotation

  • @Id

연관관계 매핑시 사용하는 Annotation

  • @ManyToOne, @JoinColumn

@Entity

  • @Entity가 붙은 클래스는 JPA가 관리하고 엔티티라 한다.
  • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 꼭 붙여 주어야 한다.
  • 기본 생성자 필수(public 또는 protected 생성자)
  • final 클래스, enum, interface, inner 클래스 사용 불가
  • 저장할 필드에 final 사용이 안된다.

@Entity의 name 속성

  • JPA에서 사용할 엔티티 이름을 지정
  • 기본값 : 클래스 이름을 그대로 사용
@Entity(name = "Member")
public class Member {

    public Member(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    @Id
    private Long id;

    @Column(unique = true, nullable = false, columnDefinition = "varchar(100) default 'EMPTY'")
    private String name;

    private Integer age;
    
    }

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

  • DDL을 애플리케이션 실행 시점에 자동 생성
  • 테이블 중심 -> 객체 중심
  • 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
  • 이렇게 생성된 DDL은 개발 장비에서만 사용

설정 방법

  • persistence.xml 에서 옵션을 줄 수 있다.
<property name="hibernate.hbm2ddl.auto" value="create"/>

데이터베이스 스키마 자동 생성 옵션 4가지

  • create - 기존 테이블 삭제 후 다시 생성(DROP + CREATE)
  • create-drop - create와 같으나 종료 시점에 테이블 DROP
  • update - 변경분만 반영(추가만 가능)
  • validate - 엔티티와 테이블이 정상 매핑되어 있는지 확인
  • none - 4가지 이외의 아무 문자나 넣어도 되지만, 통상적인 관례로 none을 넣는다.

주의 점

  • 운영 장비에는 절대 create, create-drop, update 사용하면 안된다.
  • 개발 초기 단계는 create 또는 Update
  • 테스트 서버는 update 또는 validate
  • 스테이징과 운영 서버는 validate 또는 none

출처 : 인프런(자바 ORM 표준 JPA 프로그래밍 기초편)

post-custom-banner

0개의 댓글