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, 이메일, 패스워드, 이름으로 구성되어 있는 엔티티이다.
'Spring boot' 카테고리의 다른 글
[Spring boot] - 스프링 부트 프로젝트 구조 (계층형 vs 도메인형) (0) | 2025.02.09 |
---|---|
[Spring Boot] - application.yml 설정하기 (application.properties와의 차이점) (0) | 2025.02.06 |