@Entity
🏷️ @Entity란?
정의
@Entity는 JPA에서 데이터베이스 테이블과 매핑되는 클래스를 선언하는 어노테이션이다.
@Entity가 붙은 클래스는 JPA가 관리하는 객체가 되며, 영속성 컨텍스트와 연결된다.
즉, 단순한 일반 클래스가 아니라 DB 테이블과 대응되는 엔티티 클래스로 취급된다.
⚙️ 역할
- JPA가 관리하는 엔티티 클래스를 선언한다.
- 객체와 테이블의 매핑 기준이 된다.
- ORM을 통해 데이터를 저장, 조회, 수정, 삭제할 수 있게 한다.
🧩 함께 자주 쓰는 어노테이션
@Id
- 엔티티의 기본 키를 지정한다.
@Entity에는 기본 키가 반드시 필요하다.
@GeneratedValue
- 기본 키 생성 전략을 지정한다.
- 데이터베이스 자동 증가나 시퀀스 전략과 함께 사용한다.
@Table
- 엔티티가 매핑될 테이블 이름과 제약 조건을 지정한다.
@Column
- 필드와 컬럼의 세부 매핑을 지정한다.
🧪 사용 예시
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false, length = 50)
private String name;
protected User() {
}
public User(String name) {
this.name = name;
}
}
🔍 주의점
- 기본 생성자가 반드시 필요하다.
- 식별자 필드(
@Id)가 있어야 한다. final클래스나final필드는 JPA와 잘 맞지 않는다.- 요청/응답 DTO 대신 Entity를 직접 노출하는 것은 지양하는 편이 좋다.
✅ 장점
- 객체와 데이터베이스 매핑을 자동화할 수 있다.
- SQL을 직접 작성하지 않아도 기본적인 CRUD가 가능하다.
@OneToMany,@ManyToOne같은 연관관계 매핑과 함께 사용할 수 있다.
⚠️ 단점
- 매핑 오류는 런타임에 발견될 수 있다.
- 테이블 구조와 객체 구조를 함께 고려해야 한다.
- 잘못 사용하면 엔티티가 복잡해질 수 있다.
📌 정리
@Entity는 JPA 엔티티를 선언하는 기본 어노테이션이다.- 기본 키와 기본 생성자가 필수다.
@Table,@Column,@GeneratedValue와 함께 많이 사용한다.
댓글남기기