@Entity
애노테이션이란?
- 클래스를 엔티티로 표시하는 데 사용되는 JPA 의 핵심 측면(aspect)이다.
- 클래스 하나는 관계형 데이터베이스의 테이블 하나를 나타내며 엔티티의 각 인스턴스는 테이블의 행에 해당한다.
문법
@Entity
public class MyEntity {
// Fields, constructors, getters, and setters
}
용도
@Entity
라는 애노테이션을 붙이는 것은- 해당 클래스가 영속성 컨텍스트에 의해 관리되어야 한다는 것을 말한다.
- 해당 클래스가 데이터베이스 테이블에 매핑될 것임을 JPA 에 알리는 것을 말한다.
요구사항
클래스가 엔티티가 되려면 몇가지 요구사항을 충족해야 한다.
public
혹은protected
접근자의 no-argument 생성자가 있어야 한다.- 클래스도
final
로 설정되면 안되고 인스턴스도final
로 설정되면 안된다. - 엔티티가 쿼리에서 사용되길 원한다면, 이름이 필요하다.
@Entity
애노테이션의name
속성으로 설정 가능하다.name
속성을 설정하지 않는다면, 정규화되지 않은 클래스 이름이 사용된다.
이러한 요구사항이 지켜져야 하는 이유: 왜 @Entity 는 인수가 없는 생성자가 필요하고 final 이면 안되는가?
속성
name
(Optional): 엔티티의 이름이다. 쿼리에서 사용된다. 기본값은 엔티티 클래스의 정규화되지 않은 이름이다.
예제
@Entity(name="Customer")
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
// Constructors, getters, and setters
}
참고사항
@Entity
애노테이션은 엔티티와 테이블 간의 매핑에 대한 세부사항을 정의하기 위해@Table
,@Column
,@Id
등과 같은 다른 애노테이션과 함께 사용되는 경우가 많다.- 엔티티 클래스에는
@Id
애노테이션을 사용하여 정의할 수 있는 기본 키가 있어야 한다. - 상속과 같은 다른 애노테이션을 사용하여 엔티티 간의 상속 관계를 정의할 수도 있다.
@Entity
애노테이션은 JPA 의 기본 구성 요소로 Java 객체를 관계형 데이터베이스 테이블에 매핑하여 객체 관계형 매핑(ORM)을 활성화할 수 있게 해준다.
반응형
'프레임워크 > JPA (Java Persistence API)' 카테고리의 다른 글
@Embedded 와 @Embeddable 과 @AttributeOverrides 란? (0) | 2023.08.06 |
---|---|
JPA 에서 LocalDateTime 사용하기 (0) | 2023.08.06 |
@Entity 애노테이션이란? (0) | 2023.08.05 |
@SecondaryTables 애노테이션이란? (0) | 2023.08.05 |