본문 바로가기
Spring boot

[Spring boot] - Entity 개념 정리

by 개발 고양이 2025. 2. 8.

1. Entity(엔터티)란?

Entity 클래스는 실제 DB 테이블과 매핑되는 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가진다.

=> 데이터베이스와의 상호작용을 담당한다고 이해하면 된다!

필드의 데이터 타입이 자동으로 데이터베이스의 컬럼과 매핑된다.


2. Entity에 쓰이는 annotation 종류

@Entity

이 클래스를 JPA의 엔티티로 사용하겠다는 것을 명시

 

 

@Table 

엔티티와 매핑할 데이터베이스의 테이블명을 지정할 때 사용한다.

일반적으로 entity와 실제 db의 테이블명이 일치하도록 구성하지만, 간혹 그렇지 못할 경우에 유용한다.

@Entity
@Table(name="database")
public class db_entity {
...
}

예를 들면 db에 저장되어있는 실제 table의 이름은 database인데 entity 클래스의 이름이 db_entity인 경우 위처럼 @Table 어노테이션을 사용해주면 된다.

 

 

@Getter

각 필드의 값을 조회할 수 있는 getter를 자동으로 생성한다. 

private String name;

public String getName() {
	return name;
}

변수는 보통 직접 접근하거나 변경할 수 없도록 private로 선언한다. 따라서 특정 변수의 값을 가져오려면 위의 코드에서 getName 메서드와 같이 리턴값을 받아오는 방식을 사용한다. (이러한 메서드들을 Getter라고 말한다)

이때 @Getter 어노테이션을 사용하면, Getter 메서드를 따로 작성하지 않아도 사용이 가능하다.

 

 

@Id (기본 키 지정)

해당 필드를 Primary Key (기본 키)로 지정

 

@GeneratedValue (자동 증가 ID)

기본 키 값을 자동으로 생성해준다.

IDENTITY : 기본키 생성을 데이터베이스에 위임한다. AUTO_INCREMENT 속성이 적용되어 자동으로 증가되는 기본키 값이 생성된다.

 

 

@AllArgsConstructor

선언된 모든 필드를 파라미터로 가지는 생성자를 자동으로 생성해준다.

 

@NoArgsConstructor

파라미터가 존재하지 않는 기본생성자를 자동으로 생성해준다. 

@Entity 어노테이션을 사용할 경우, @Entity에 의해 기본 생성자가 자동으로 생성되긴 한다.

그렇다면 왜 @NoArgsConstructor를 사용하는가? 라고 묻는다면, 괄호 안에 접근 조건 등을 지정해주기 위해서이다. (안전성을 높이기 위한 목적)

 

 

@Column

컬럼명을 별도로 지정하거나, 별도로 조건을 걸어줄 때 사용한다.

name : 매핑할 테이블의 컬럼 이름 지정

nullable : NULL 허용 여부 설정

unique : 제약 조건

length : 디폴트 값은 255로, varchar의 길이를 설정


package com.study.member.entity;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "member")
public class MemberEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // AUTO_INCREMENT
    private Long id;

    @Column(unique = true)
    private String Email;

    @Column
    private String Password;

    @Column
    private String Name;
}

Entity 클래스 예시이다.

자동으로 기본키인 id를 생성하며, id, 이메일, 패스워드, 이름으로 구성되어 있는 엔티티이다.