자바/JPA

JPA: 엔티티(Entity) 매핑

류창 2022. 6. 14. 13:38
반응형

 

데이터베이스에 있는 테이블정보와 매핑하려면 Spring단에서 엔터티를 만들어 매핑해야만한다.

 

그 엔티티를 만들고 매핑하기위한 어노테이션은 다음과같다. 

 

• 객체와 테이블 매핑: @Entity, @Table

• 필드와 컬럼 매핑: @Column

• 기본 키 매핑: @Id

• 연관관계 매핑: @ManyToOne,@JoinColumn ... 

 

 

@Entity

 

• @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.

• JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수

 

유의사항

기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)

• final 클래스, enum, interface, inner 클래스 사용X

• 저장할 필드에 final 사용 X

 

 

사용법은 Member 클래스 위에다가 @Entity를 작성한다. 

 

@Entity를 작성하면  JPA가 관리하여  데이터베이스와 테이블과 매핑한다.

 

 

속성: name  

 

• JPA에서 사용할 엔티티 이름을 지정한다.

• 기본값: 클래스 이름을 그대로 사용(예: Member)

 

@Table

 

@Table 어노테이션은  데이터베이스에서 쓸 테이블 이름 또는 매핑하고싶은 테이블 이름을 쓴다.

 

이 어노테이션을 안쓰면, @Entity 의 기본 클래스명을 디폴트로 매핑한다.

 

 

 

@ID, @GeneratedValue

 

 

@ID 어노테이션은   데이터베이스에  PK 가 있듯이,  엔터티객체에도  PK를 설정을해줘야하는데, 

그 작업을 간단하게 해주는 기능이다.

 

@GeneratedValue  어노테이션은  @ID로 설정한 컬럼의 값을 데이터베이스에 맡긴다.

이는 즉, 데이터베이스가 알아서 값을 설정해준다.

 

 

 

 

다양한 어노테이션 매핑

 

@Column

 

@Table과 비슷한 의미를 띈다.   Entity내부에선   name 으로 쓰고싶지만,  DB 내부엔 userName으로 저장되어있으면

컬럼명 불일치를 해결해주는 속성이다.

 

등록, 변경가능 여부, 문자길이 제약조건 , nullable 등등 다양한 제약조건을 걸수가있다.

 

 

@Enumerated

 

자바 Spring안에서 설정한 Enum타입을 사용하고싶을때 쓴다.

속성은 2가지가 있지만,  Ordinal 속성은 쓰지말자

왜냐하면 Enum타입의 값을 수정할때 발생하는 오류를 겉잡을수가 없기 때문이다.

 

 

속성명 설정
Enum타입 클래스
실제 사용

 

반응형

'자바 > JPA' 카테고리의 다른 글

JPA 값타입  (0) 2022.06.27
JPA : 상속관계 매핑  (0) 2022.06.15
JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M)  (0) 2022.06.14
JPA 의 기초(CRUD) 다루어보기  (0) 2022.01.07
스프링: 왜 JPA를 쓰는가?  (0) 2022.01.05