1. 데이터베이스 스키마 자동생성
1-1. 개발 환경
hibernate.hbm2ddl.auto=create
, update
, create-drop
사용 OK
- 빠르게 실험하고 구조를 바꿀 수 있음
- DDL을 애플리케이션 실행 시점에 자동 생성
- 테이블중심 → 객체중심
- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL생성
1-2. 운영 환경
hibernate.hbm2ddl.auto=none
또는 아예 설정하지 않음
- 이렇게 생성된 DDL은 개발 단계에서만 사용, 운영단계에서 사용 X
- DML은 자동생성을 사용해도 괜찮지만 비즈니스로직에서 조건을 명확하게 명시해줘야함
- DDL은 SQL 스크립트로 명시적 관리
Flyway
, Liquibase
등 마이그레이션 툴 사용 권장
2. 객체와 테이블 매핑 (@Entity, @Table)
2-1. @Entity
- @Entity가 붙은 클래스는 JPA가 관리, 엔티티라고 한다. DB와 1:1로 매핑되는 클래스이다.
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다.
- 주의할 점
- 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
- final클래스, enum, interface, inner클래스 사용 x
- 저장할 필드에 final 사용 x
3. 필드와 컬럼 매핑 (@Column)
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
public Member() {
}
}

@Column
→ 컬럼 매핑
@Temporal
→ 날짜 타입 매핑
@Enumerated
→ ENUM 타입 매핑
@Lob
- BLOB → 바이너리(이미지, 영상, 파일)
- CLOB → 문자타입일 시
@Transient
→ 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)
3-1. @Column