엔티티 매핑
객체와 테이블 매핑시 사용하는 Annotation
필드와 컬럼을 매핑시 사용하는 Annotation
기본 키를 매핑시 사용하는 Annotation
연관관계 매핑시 사용하는 Annotation
@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 프로그래밍 기초편)