JPA 객체와 데이터베이스 연동시 매핑

Frog Lemon·2023년 11월 5일
1

Spring

목록 보기
3/4
post-thumbnail
  • 스프링에서 JPA와 H2데이터베이스를 연동하는 과정을 살펴보자
  • 객체와 데이터베이스를 매핑을 통해 데이터베이스 처리 과정을 JPA에게 맡기고
    개발자는 객체를 중심으로 개발하면 된다

<만약 스프링부트를 사용시 JPA에서 편해지는 점>

기존의 스프링 프레임워크에서는 스프링과 JPA를 조합하여 사용할 때 많은 설정을 수동으로 처리해야 했다. 예를들면

  • 엔티티 매니저 및 데이터 소스 구성
  • 트랜잭션 관리
  • Hibernate 및 JPA 설정
  • Repository 설정 : Repository 인터페이스를 정의하고 구현 클래스를 작성해야 했습니다
  • 데이터베이스 초기화 : 데이터베이스 스키마를 초기화하거나 업데이트하는 작업을 수동으로 처리해야 했다.

허나 스프링부트가 등장하면서 많은 부분을 자동화 하는 기능을 제공하였다.
트랜잭션 관리엔티티 매니저 생성 자동화 기능은 그중 하나이다.
Spring Boot의 핵심 목표 중 하나는 개발자가 이러한 기능을 설정하고 관리하는 부담을 줄이는 것이다.

허나 이번에는 스프링부트를 사용하지않고 진행해볼려고한다


매핑 구조

회원 객체(Class)회원 테이블(DB)
클래스와 테이블MeberMEMBER
기본 키(PK)idID
필드와 컬럼usernameNAME
필드와 컬럼ageAGE

H2 데이터베이스에 테이블 생성하기

H2데이터베이스에 테이블 생성 코드를 실행하였고 그 결과 MEMBER 테이블이 생성되엇다

CREATE TABLE MEMBER (
ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255),
AGE INTEGER NOT NULL,
PRIMARY KEY (ID)
);

Member 클래스 작성

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 컬럼으로 매핑했다.

profile
노력과 끈기를 추구합니다. 레몬이 좋아!

0개의 댓글