본문 바로가기
Backend/JPA

JPA에서 객체와 테이블 매핑 및 데이터베이스 매핑 개념 정리

by 재성스 2025. 2. 19.
반응형

 

1. 객체와 테이블 매핑

객체와 테이블 매핑(Object-Relational Mapping, ORM)은 JPA를 사용하여 자바 객체를 데이터베이스의 테이블과 연결하는 것을 의미한다.
이를 통해 개발자는 SQL을 직접 작성하지 않고도 객체 지향적인 방식으로 데이터를 관리할 수 있다.

객체와 테이블 매핑을 위한 기본 어노테이션

  • @Entity : JPA에서 관리하는 엔티티 객체로 지정
  • @Table(name = "테이블명") : 특정 테이블과 매핑 (기본값: 클래스명과 동일)
@Entity
@Table(name = "members") // 실제 데이터베이스 테이블 이름 지정
public class Member {

    @Id
    @GeneratedValue
    private Long id;

    private String name;
}

🔹 주요 특징

  • @Entity가 선언된 클래스는 JPA가 관리하는 객체가 됨
  • @Table을 사용하여 명시적으로 테이블명을 지정 가능

 

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

JPA는 애플리케이션 실행 시 자동으로 데이터베이스 테이블을 생성할 수 있다.
이 기능은 hibernate.hbm2ddl.auto 속성을 통해 설정한다.

스키마 자동 생성 옵션

설명
create 기존 테이블 삭제 후 다시 생성
create-drop 애플리케이션 종료 시 테이블 삭제
update 변경 사항만 반영 (기존 데이터 유지)
validate 테이블과 엔티티가 매핑되는지 검증 (변경 X)
none 자동 생성 기능 비활성화

application.properties 설정

spring.jpa.hibernate.ddl-auto=update

 

3. 필드와 컬럼 매핑

JPA에서 객체의 필드를 데이터베이스 컬럼과 매핑할 때는 @Column 어노테이션을 사용한다.

기본적인 컬럼 매핑 예제

@Entity
public class Member {

    @Id @GeneratedValue
    private Long id;

    @Column(name = "user_name", length = 50, nullable = false, unique = true)
    private String name;
}

컬럼 매핑 주요 속성

속성 설명
name 컬럼명 지정 (기본값: 필드명)
length 문자열 컬럼 길이 (기본값: 255)
nullable false이면 NOT NULL
unique true이면 유니크 제약 조건 추가
columnDefinition 컬럼 속성을 직접 정의 (TEXT, VARCHAR(255) 등)
@Column(columnDefinition = "TEXT") // TEXT 타입으로 지정
private String description;

 

4. 기본 키 매핑

JPA에서 기본 키(PK)를 매핑할 때는 @Id를 사용하며, 자동 생성하려면 @GeneratedValue를 추가한다.
기본 키 생성 전략에는 4가지가 있다.

기본 키 매핑 예제

@Entity
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본 키 자동 증가
    private Long id;
}

기본 키 생성 전략 비교

전략 설명
IDENTITY DB의 AUTO_INCREMENT 사용 (MySQL, PostgreSQL 등)
SEQUENCE DB의 시퀀스 사용 (Oracle, PostgreSQL 등)
TABLE 키 생성 전용 테이블 사용
AUTO 데이터베이스에 맞게 자동 선택 (기본값)

 

5. 정리

JPA를 활용한 매핑 개념 정리

  • 객체와 테이블 매핑 : @Entity와 @Table 사용
  • 데이터베이스 스키마 자동 생성 : hibernate.hbm2ddl.auto 옵션 활용
  • 필드와 컬럼 매핑 : @Column으로 속성 지정
  • 기본 키 매핑 : @Id와 @GeneratedValue로 자동 생성 가능

 

반응형