[JPA] 엔티티 매핑

Junseo Kim·2020년 3월 21일
0

Entity 매핑

JPA 프로그래밍에서 가장 기본적인 것이다.

도메인 모델을 만들었으면, 하이버네이트에게 만든 도메인 모델을 릴레이션에 어떻게 적용시킬지 정보를 줘야한다.

방법은 두가지가 있다.
1. 애노테이션을 사용하는 방법
2. xml을 사용하는 방법

그렇지만 요즘은 2번 방법은 거의 사용하지 않는다.

@Entity: 이 도메인 클래스가 엔티티라는 것을 알려주는 것. 엔티티이기 때문에 자동으로 테이블로 매핑이 된다.(@Table이 생략되어 있는것) 속성 값으로 name을 줄 수 있는데, 기본값은 클래스이름이다.

@Id: primary key 설정해주는 것. primitive type(ex. long)이나 wrapper type(ex. Long)으로 사용할 수 있다.

@GeneratedValue: 생성된 주키를 자동 생성된 값을 사용하겠다는 애노테이션. DB에 따라 생성전략(TABLE, SEQUENCE, IDENTITY)이 달라진다. strategy 속성을 부여해서, 전략을 바꿔줄 수 있다. 기본적으로는 AUTO이다.

@Column: Entity에 들어있는 멤버변수에는 전부다 @Column이 붙어있다고 생각하면된다.(생략된 것) nullable, unique등의 속성을 부여할 수 있다.

@Temporal: 날짜를 다룬다. DATE, TIME, TIMESTAMP 중에 하나를 선택해서 사용할 수 있다.

@Transient: 릴레이션과 매핑하지 않고, 객체 내에서만 사용하고 싶을 때 붙이는 애노테이션.

이미 만들어진 Column의 타입을 바꿀 수는 없다.
getter/setter는 필수는 아니다. 없어도 매핑은 된다.
sql 실행결과를 쉽게 보려면, application.properties에 아래코드를 추가해주면 된다.

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

0개의 댓글