* 본 글은 인프런 김영한님의 자바 ORM표준 JPA 프로그래밍 강의를 듣고 개인적인 생각을 요약 정리한 내용입니다.
강의 출처: https://www.inflearn.com/course/ORM-JPA-Basic
JPA 엔티티 매핑의 정의
JPA를 이해하는데 있어 가장 중요한 개념 중 하나는 "영속성 컨텍스트"입니다. 영속성 컨텐스트는 엔티티를 영구적으로 저장하고 관리하는 환경을 제공합니다. 엔티티 매핑은 이러한 영속성 컨텍스트와 데이터베이스 테이블 간의 매핑을 정의하는 것 입니다.
객체와 테이블 매핑
- @Entity
- @Entity의 정의
- `@Entity`어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티로 인식됩니다. JPA를 사용하여 테이블과 매핑할 클래스는 반드시 `@Entity`어노테이션을 사용해야합니다.
- JPA는 엔티티 객체를 생성할 때 기본 생성자를 사용합니다. 따라서 엔티티 클래스는 파라미터가 없는 public 또는 protected 생성자를 반드시 가져야 합니다.
- 제약사항으로 `final, enum, interface`클래스는 엔티티로 사용할 수 없습니다.
- @Entity의 속성
- `name`: JPA에서 사용할 엔티티의 이름을 지정합니다. 기본적으로는 클래스의 이름을 그대로 사용합니다. 클래스 이름이 충돌하는 경우에는 `name`속성을 사용하여 구분할 수 있습니다.
- @Entity의 정의
- @Table
- @Table의 정의
- `@Table`어노테이션은 엔티티 클래스가 매핑될 데이터베이스 테이블을 지정합니다. `@Table`어노테이션을 생략하면 엔티티 클래스 이름과 동일한 이름의 테이블과 매핑됩니다.
- @Table의 정의
데이터베이스 스키마 자동 생성
JPA는 어플리케이션 실행 시점에 DDL을 자동으로 생성하는 기능을 제공합니다. 이를 통해 테이블 중심의 개발에서 객체 중심의 개발로 전환할 수 있습니다. 데이터베이스의 방언을 활용하여 데이터베이스에 맞는 적절한 DDL을 생성합니다. 생성된 DDL은 개발 장비에만 사용되고, 운영 환경에서는 직접 작성된 DDL을 사용하는 것이 일반적입니다.
아래는 엔티티 클래스로 자동으로 생성된 DDL 예시입니다.
create table Member(
id bigint not null,
name varchar(255),
primary key (id)
)
데이터베이스 스키마 자동 생성 주의사항
데이터베이스 스키마 자동 생성 시에는 다양한 옵션을 고려해야 합니다. 특히 운영장비에서는 `create`, `create-drop`, `update`옵션을 사용해서는 안됩니다. 스키마 자동 생성 옵션은 개발 단계, 테스트 서버, 스테이징 서버, 운영 서버등 환경에 따라 다르게 설정하는 것이 좋습니다.
- 개발 초기 단계: `create` 또는 `update` 옵션 사용
- 테스트 서버: `update` 또는 `validate` 옵션 사용
- 스테이징 서버 및 운영 서버: `validate` 또는 `none` 옵션 사용
필드와 컬럼 매핑
JPA에서 엔티티의 필드와 데이터베이스의 컬럼을 매핑하는 작업은 `@Column`어노테이션을 사용합니다.
- @Column: 컬럼 매핑을 위해 사용하는 어노테이션
- @Temporal: 날짜 타입 매핑을 위한 어노테이션(날짜 관련 필드에 사용)
- @Enumerated: Enum 타입 매핑을 위한 어노테이션(Enum 타입 필드에 사용)
- @Lob: BLOB, CLOB 매핑을 위한 어노테이션(대용량 데이터 필드에 사용)
- @Transient: 특정필드에 컬럼을 매핑하지 않음(영속성 처리에서 제외)
기본 키 매핑
엔티티의 기본 키를 매핑하는 방법은 `@Id`어노테이션을 사용합니다.
- 직접할당: @Id만 사용하여 직접 기본 키를 할당하는 방법
- 자동생성: @GeneratedValue 어노테이션을 함께 사용하여 자동 생성되는 기본 키를 매핑, 자동 생성은 다음과 같은 방식으로 생성될 수 있습니다.
- IDENTITY: 데이터베이스에 위임하여 자동 생성(MySQL에서 사용)
- SEQUENCE: 데이터베이스의 시퀀스 오브젝트를 사용하여 자동 생성(Orcle에서 사용)
- TABLE: 키 생성용 테이블을 사용하여 자동 생성(모든 DB에서 사용)
- AUTO: 방언에 따라 자동 지정
권장하는 식별자 전략
기본키 제약조건은 NULL이 아니여야 하며, 유일하고 변하지 않아야 합니다. 대표적으로 자동 생성되는 식별자 전략 중 하나를 선택하여 사용합니다.
'Lecture Notes > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[SpringBoot / JPA] 영속성 관리 (0) | 2023.07.09 |
---|---|
[SpringBoot / JPA] JPA란 무엇인가? (0) | 2023.07.03 |