Spring Boot & JPA

2.3. JPA Entity 설계

backend 따라쟁이 2024. 12. 29. 23:08

1. JPA Entity란?

JPA의 Entity는 데이터베이스의 테이블과 매핑되는 자바 클래스입니다. JPA는 엔티티 객체를 통해 데이터베이스와 상호작용하며, 객체 지향적인 방식으로 데이터를 관리할 수 있게 합니다. 즉, 데이터베이스 테이블의 구조를 자바 객체로 표현한 것이 바로 JPA 엔티티입니다.

이번 프로젝트에서는 sam_table이라는 테이블을 매핑하기 위해 SamTable이라는 엔티티 클래스를 작성했습니다.


2. SamTable Entity 설계

sam_table 테이블은 다음과 같은 구조를 가지고 있다고 가정합니다:

Column NameData TypeConstraints

keyno INT Primary Key, Auto Increment
value VARCHAR Not Null

이 테이블을 매핑하기 위해 JPA 엔티티를 설계합니다.

코드 구현


3. 어노테이션 설명

엔티티 설계에서 사용된 주요 JPA 어노테이션에 대해 설명하겠습니다.

1) @Entity

  • 이 클래스가 JPA 엔티티임을 나타냅니다.
  • JPA는 이 어노테이션이 붙은 클래스를 데이터베이스 테이블과 매핑합니다.

2) @Table(name = "sam_table")

  • 엔티티가 매핑될 데이터베이스 테이블의 이름을 명시합니다.
  • 생략하면 클래스 이름(CamelCase)을 Snake Case로 변환하여 테이블 이름으로 사용합니다. 예: SamTable → sam_table.

3) @Id

  • 기본 키(Primary Key) 필드를 지정합니다.
  • 데이터베이스 테이블에서 각 레코드를 고유하게 식별하기 위해 필요합니다.

4) @GeneratedValue(strategy = GenerationType.IDENTITY)

  • 기본 키 값을 자동으로 생성하는 전략을 설정합니다.
  • GenerationType.IDENTITY는 데이터베이스에서 Auto Increment를 사용하는 전략입니다.

5) 컬럼 매핑

  • 필드 이름이 컬럼 이름과 동일하면 자동으로 매핑됩니다.
  • 추가로 @Column 어노테이션을 사용하여 컬럼 속성을 세부적으로 설정할 수 있습니다. 예:


4. JPA 엔티티의 역할

  1. 데이터 매핑: 데이터베이스 테이블 구조를 자바 객체로 표현합니다.
  2. 데이터 관리: 객체를 통해 데이터베이스에 접근하고, 데이터를 읽거나 쓸 수 있습니다.
  3. 유지보수성 향상: 테이블 구조가 변경되더라도 엔티티 클래스만 수정하면 코드 전체에 반영됩니다.

5. 데이터베이스 테이블 생성

Spring Boot는 JPA 설정에 따라 데이터베이스 테이블을 자동으로 생성합니다. 이를 위해 application.properties 파일에 다음과 같은 설정이 포함되어야 합니다:

spring.jpa.hibernate.ddl-auto=update

동작

  • 애플리케이션 실행 시, SamTable 엔티티를 기반으로 sam_table 테이블이 생성됩니다.
  • 기존 테이블이 없는 경우 생성하며, 변경된 필드는 자동으로 추가 또는 수정됩니다.

6. 테스트

JPA 엔티티 설계가 제대로 동작하는지 확인하려면 다음 단계를 수행합니다:

  1. 애플리케이션을 실행합니다.
  2. MySQL Workbench 또는 다른 SQL 클라이언트를 사용하여 sam_table 테이블이 생성되었는지 확인합니다:
    SHOW TABLES; DESCRIBE sam_table;

7. 결론

SamTable 엔티티는 데이터베이스의 sam_table 테이블과 매핑되며, JPA를 통해 객체 지향적으로 데이터베이스를 관리할 수 있는 기반을 제공합니다. 이 엔티티는 이후의 CRUD 기능 구현에서 핵심적인 역할을 하며, JPA를 사용하여 SQL 쿼리를 작성하지 않고도 데이터를 처리할 수 있습니다.

다음 단계에서는 Repository를 작성하여 엔티티와 데이터베이스 간의 연동을 처리하겠습니다.