Reference. 자바 ORM 표준 JPA 프로그래밍
책 목차 및 이전 글
4.1 @Entity
들어가기 전
- JPA에서 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 작업
- JPA는 다양한 매핑 어노테이션을 지원, 크게 4가지로 분류 가능
- 객체와 테이블 매핑:
@Entity
,@Table
- 기본 키 매핑:
@Id
- 필드와 컬럼 매핑:
@Column
- 연관관계 매핑:
@ManyToOne
,@JoinColumn
- 객체와 테이블 매핑:
4.1 @Entity
- 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수
@Entity
속성@Entity속성
속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정, 보통 기본값인 클래스 이름을 사용 만약 다른 패키지에 이름이 같은 클래스가 있다면 충돌하지 않도록 지정 설정하지 않으면 클래스 이름을 그대로 사용(Member)
@Entity
주의 사항- 기본 생성자는 필수 (파라미터 없는 public 또는 protected 생성자) → JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용
public class Member { public Member() { } }
final 클래스
,enum
,interface
,inner 클래스
에는 사용 못함
- 저장할 필드에 final 못씀
- 기본 생성자는 필수 (파라미터 없는 public 또는 protected 생성자) → JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용
4.2 @Table
- 엔티티와 매핑할 테이블을 지정
@Table
속성
@Table속성
속성 | 기능 | 기본값 |
---|---|---|
name | 매핑할 테이블 이름 | 엔티티 이름을 사용 |
catalog | catalog 기능이 있는 데이터베이스에서 catalog 매핑 | |
schema | schema 기능이 있는 데이터베이스에서 schema 매핑 | |
uniqueConstrainsts (DDL) | DDL 생성 시에 유니크 제약조건을 생성 2개 이상의 복합 유니크 제약조건도 가능 스키마 자동 생성 기능을 사용해서 DDL 만들때 사용 | |
제목 없음 |
4.3 다양한 매핑 사용
- JPA 시작하기 장에 Member 테이블에 요구사항이 아래의 조건으로 추가 됌
- 회원은 일반 회원과 관리자로 구분
- 회원 가입일과 수정일이 존재
- 회원을 설명할 수 있는 필드가 존재하며, 필드는 길이 제한이 없음
Member.java
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String username;
private Integer age;
//=== 추가
@Enumerated(EnumType.STRING)
private RoleType roleType; // ----- 1
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate; // ----- 2
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate; // ----- 2
@Lob
private String description; // ----- 3
@Transient
private String temp;
RoleType.java
public enum RoleType{
ADMIN, USER
}
- 위에 회원 코드 분석
roleType
- 자바의
enum
을 사용해서 타입 구분, 일반 회원은 USER, 관리자는 ADMIN
enum
을 사용하려면@Enumerated
어노테이션 매핑 필요 (4.7.2절 참고)
- 자바의
createdDate
,lastModifiedDate
- 자바의 날짜 타입은
@Temporal
을 사용해서 매핑 (4.7.3절 참고)
- 자바의 날짜 타입은
description
- 이 필드는 길이 제한이 없으므로 데이터베이스의
varchar
대신CLOB
으로 저장 필요
- 이 필드는 길이 제한이 없으므로 데이터베이스의
'개발서적 > 자바 ORM 표준 JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 4.6 기본 키 매핑 (0) | 2021.08.03 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 4.4 - 4.5 데이터베이스 스키마 자동 생성, DDL 생성 기능 (0) | 2021.08.03 |
[자바 ORM 표준 JPA 프로그래밍] 3.6 준영속 (0) | 2021.07.28 |
[자바 ORM 표준 JPA 프로그래밍] 3.5 플러시 (0) | 2021.07.28 |
[자바 ORM 표준 JPA 프로그래밍] 3.4 영속성 컨텍스트의 특징 (0) | 2021.07.28 |