JPA & QueryDSL

[JPA] 엔티티 매핑

2023. 10. 4. 19:00
목차
  1. 엔티티 클래스 @Entity
  2. 데이터베이스 스키마 자동 생성
  3. Options
  4. 엔티티 매핑 관련 상세 속성 알아보기

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

 

저작자표시 (새창열림)

'JPA & QueryDSL' 카테고리의 다른 글

[JPA] 연관관계 매핑 - @ManyToOne, @OneToMany  (0) 2023.10.06
[JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성  (1) 2023.10.04
[JPA] @Entity - 기본 키 매핑  (1) 2023.10.04
[JPA] ORM, JPA, Hibernate, Spring Data JPA의 관계  (0) 2023.10.03
[JPA] 영속성 컨텍스트의 주요 개념 / Spring Data JPA에서의 영속성  (1) 2023.10.02
  1. 엔티티 클래스 @Entity
  2. 데이터베이스 스키마 자동 생성
  3. Options
  4. 엔티티 매핑 관련 상세 속성 알아보기
'JPA & QueryDSL' 카테고리의 다른 글
  • [JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성
  • [JPA] @Entity - 기본 키 매핑
  • [JPA] ORM, JPA, Hibernate, Spring Data JPA의 관계
  • [JPA] 영속성 컨텍스트의 주요 개념 / Spring Data JPA에서의 영속성
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (235)
    • Java (25)
    • Spring (29)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (47)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (5)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • springsecurity
  • vue3
  • 제로베이스
  • Database
  • HTTP
  • 클린코드
  • mybatis
  • Java
  • cleancode
  • SpringBoot
  • Linux
  • SQL
  • 개발자
  • Redisson
  • TechInterview
  • 기술면접
  • web
  • Nuxt3
  • JPA
  • 리눅스
  • 백엔드기술면접
  • 백준
  • 트랜잭션
  • 백엔드공부
  • Redis
  • 백엔드
  • Spring
  • 백엔드스쿨
  • MySQL
  • 자료구조

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
[JPA] 엔티티 매핑
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.