@Entity - 테이블 매핑

JPA 테이블을 매핑한다! @Entity

1. 예제

@Entity(name = "items")
public class Item() {

	@Id @GeneratedValue
    private Long id;
    
    protected Item() {
    }
}

2. JPA를 사용해서 클래스와 테이블을 매핑 시키기 위해서는 @Entity 어노테이션이 필요하다.

@Entity가 적용된 클래스는 다음과 같은 주의사항을 지켜야 한다.

  1. 기본 생성자가 있어야 한다.
  2. final 클래스, enum, interface에서는 사용할 수 없다.
  3. 저장할 필드에 final을 사용하면 안 된다.

@Entity의 속성

  1. name : 엔터티의 이름을 정의한다. 설정하지 않으면 Class 이름을 그대로 사용한다.

3. 기본 생성자가 있어야 하는 이유

JPA가 엔티티 객체를 사용할 때 기본 생성자를 사용한다.
생성자가 없으면 자바가 기본 생성자를 만들어준다.

단. 임의의 생성자가 존재하면 기본 생성자를 만들어주지 않는다. 이 때는 기본 생성자를 만들어주지 않으므로 직접 만들어야 한다.

4. @Entity 부가내용

  • 클래스의 기본 생성자는 protect로 만들어 객체 생성 오사용을 막는다.
  • JPA는 "변경감지"를 사용하므로 Setter를 무분별하게 사용할 시 원하지 않는 DB update가 발생될 수 있다. 이것을 막기위해 부득이한 경우를 제외하고 Setter를 열지 않도록 한다.

좋은 웹페이지 즐겨찾기