mjeongriver
Published 2024. 1. 18. 09:14
@Entity, @Table 차이점 TIL/JPA

@Entity@Table은 JPA (Java Persistence API)에서 사용되는 어노테이션(Annotations)으로, 엔티티 클래스와 데이터베이스 테이블과의 관계를 설정하는 데 사용됩니다. 각각의 역할과 차이점을 아래와 같이 설명할 수 있습니다.

 

@Entity

  • @Entity 어노테이션은 클래스가 JPA 엔티티임을 나타냅니다. 이것은 해당 클래스가 데이터베이스 테이블에 매핑될 것이라는 것을 의미합니다.
  • 이 어노테이션은 클래스 수준에 적용되며, JPA가 해당 클래스의 인스턴스를 엔티티로 관리하도록 합니다.
  • @Entity가 적용된 클래스는 반드시 식별자(Primary Key)를 가지는 필드를 포함해야 합니다. 이는 @Id 어노테이션으로 표시됩니다.

@Table

  • @Table 어노테이션은 엔티티가 매핑될 데이터베이스 테이블에 대한 세부 정보를 제공합니다.
  • 주로 테이블의 이름, 카탈로그, 스키마 이름 등을 지정하는 데 사용됩니다. @Table 어노테이션을 사용하지 않으면 JPA는 기본적으로 엔티티 클래스 이름을 데이터베이스 테이블 이름으로 사용합니다.
  • @Table은 선택적으로 사용할 수 있으며, 테이블 이름이 클래스 이름과 다르거나 추가 설정이 필요할 때 주로 사용됩니다.

 

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // ... 다른 필드와 메서드
}

 

위 예시에서 @EntityUser 클래스가 JPA 엔티티임을 나타냅니다. @Table(name = "users")는 이 엔티티가 매핑될 데이터베이스 테이블이 users라는 이름을 가진다는 것을 명시합니다.

 

요약

  • @Entity는 클래스가 JPA 엔티티임을 나타내며, 이를 통해 JPA가 엔티티를 관리합니다.
  • @Table은 해당 엔티티가 매핑될 데이터베이스 테이블의 세부 사항을 제공합니다.
  • @Entity는 필수적이지만, @Table은 선택적이며 추가적인 테이블 설정이 필요한 경우에 사용됩니다.

'TIL > JPA' 카테고리의 다른 글

DTO와 Entity를 분리해서 사용하는 이유  (0) 2024.01.18
@Transaction(readOnly=true)  (1) 2023.11.22
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그