기존의 스프링 프레임워크에서는 스프링과 JPA를 조합하여 사용할 때 많은 설정을 수동으로 처리해야 했다. 예를들면
허나 스프링부트가 등장하면서 많은 부분을 자동화 하는 기능을 제공하였다.
트랜잭션 관리
와 엔티티 매니저 생성 자동화 기능
은 그중 하나이다.
Spring Boot의 핵심 목표 중 하나는 개발자가 이러한 기능을 설정하고 관리하는 부담을 줄이는 것이다.
회원 객체(Class) | 회원 테이블(DB) | |
---|---|---|
클래스와 테이블 | Meber | MEMBER |
기본 키(PK) | id | ID |
필드와 컬럼 | username | NAME |
필드와 컬럼 | age | AGE |
H2데이터베이스에 테이블 생성 코드를 실행하였고 그 결과 MEMBER
테이블이 생성되엇다
CREATE TABLE MEMBER (
ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255),
AGE INTEGER NOT NULL,
PRIMARY KEY (ID)
);
package com.jpa.velog.data;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String username;
//매핑정보가 없는 없는 필드
private Integer age;
}
@Entity
이 클래스를 테이블과 매핑 할거라는 것을 JPA에게 알려준다. @Entity
가 붙은 클래스를
엔티티 클래스라고 한다.
@Table
엔티티 클래스에 매핑을 테이블 정보를 알려준다. 여기서 @Table(name = "MEMBER")
를 통해 Member
엔티티클래스가 MEMBER
테이블과 맵핑된다
이 어노테이션을 생략하면 엔티티 이름을 테이블 이름으로 매핑한다.
@Id
엔티티 클래스의 필드를 테이블의 기본키(PK)에 매핑한다.
@Column
필드를 컬럼에 매핑한다. 여기서는 @Column(name = "?")
을 통해 엔티티의 필드를 테이블의 컬림에 매핑했다.
@매핑 정보가 없는 필드
age 필드에는 매핑 어노테이션이 없다. 이렇게 매핑 어노테이션을 생략하면 필드명을 사용해서 컬럼명으로 매핑한다.
여기서는 age이므로 age 컬럼으로 매핑했다.