Database/JPA

[JPA] 엔티티 매핑

HSRyuuu 2023. 10. 4. 19:00

ORM은 객체와 RDB의 테이블을 자동으로 매핑하는 기술이다.

JPA에서는 Java 클래스를 Entity로 지정하여 해당 Entity 클래스와 DB의 테이블을 매핑한다.

 

엔티티 클래스 @Entity


@Entity가 붙은 클래스는 JPA가 관리하고, 이를 엔티티라 한다.

JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 붙여줘야 한다.

@Entity
public class Member{
    @Id
    Long id;
    String name;
    
    public Member(){}
}

@Id로 Primary Key를 필수로 설정해줘야 하고, 기본 생성자가 필수로 존재해야 한다.

 

@Entity 어노테이션의 속성으로 name을 추가할 수 있다.

이 속성을 추가하면, 실제 엔티티 클래스와 DB의 엔티티 이름을 다르게 설정할 수 있다.

 

예를 들면 아래와 같이 엔티티 클래스 명은 MemberEntity, 테이블 명은 MEMBER로 설정할 수 있다. 

@Entity("MEMBER")
public class MemberEntity{

}

 


 

데이터베이스 스키마 자동 생성


테이블 생성 DDL을 애플리케이션 실행 시점에 자동으로 생성하는 기능이다.

개발 시에 테이블 중심이 아닌 객체 중심 개발이 가능하다. 

 

스키마 자동 생성 기능에는 여러 가지 옵션이 있고, 이 중 상황에 따라 선택해서 사용하면 된다.

spring.jpa.hibernate.ddl-auto: {option}

Options

  • create : 기존 테이블 삭제 후 다시 생성한다. (drop table -> create table)
  • create-drop : create와 같지만, 종료 시점에 테이블을 drop 한다.
  • update : 변경된 부분만 반영한다. (기존의 테이블에 alter table 하여 변경)
  • validate : 엔티티와 테이블이 정상 매핑 되었는지만 확인한다.
  • none : 해당 기능 사용하지 않음.

 

create, create-drop, update는 테이블을 drop 하고, 테이블의 직접적인 변경이 이루어지는 만큼,

운영 서버에서는 절대 사용하면 안 된다.

 

개발 초기에는 create 또는 update, 

테스트 서버는 update 또는 validate,

운영 서버는 validate 또는 none을 사용하는 것이 좋다고 한다.


엔티티 매핑 관련 상세 속성 알아보기

기본 키 매핑

2023.10.04 - [Spring/JPA] - [JPA] @Entity - 기본 키 매핑

 

[JPA] @Entity - 기본 키 매핑

@Entity 클래스에는 기본적으로 PK(PrimaryKey)가 있어야 한다. PK로 사용할 칼럼에 @Id 어노테이션을 사용하여 해당 칼럼을 PK로 설정한다. 이 PK 매핑 방법과 여러 가지 속성들에 대해 알아보자. PrimaryKe

innovation123.tistory.com

필드와 컬럼 매핑

2023.10.04 - [Spring/JPA] - [JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성

 

[JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성

필드와 컬럼 매핑 엔티티 클래스의 각 필드에 여러 가지 옵션을 갖는 어노테이션을 붙여서 더 자세히 매핑할 수 있다. Column 별 매핑 상세 @Column : 컬럼 DB 테이블의 각 컬럼 관련 제약사항 등을 추

innovation123.tistory.com


(참고) 인프런 - 김영한 님 '자바 ORM 표준 JPA 프로그래밍 - 기본 편'
https://www.inflearn.com/course/ORM-JPA-Basic

 

반응형