@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;
// ... 다른 필드와 메서드
}
위 예시에서 @Entity는 User 클래스가 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 |