twocowsong

@Entity 본문

IT/JPA

@Entity

WsCode 2022. 5. 9. 21:42

깃허브 정리 URL : https://github.com/sWineTake/jpa.git

 

GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한

자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.

github.com

JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 합니다.

@Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 부릅니다.

 

@Entity 속성 정리

JPA에서 사용할 엔티티 이름을 지정합니다. 보통 기본값인 클래스 이름을 사용합니다.

만약 패키지에 이름이 같은 엔티티 클래스가있다면 충돌되지않게 이름을 지정해야합니다.

 

@Entity적용시 주의할 사항이 아래와 같습니다.

- 기본 생성자는 필수입니다.(파라미터가 없는 public 또는 protected 생성자)

- final 클래스, enum, interface, inner 클래스에 사용할 수 없습니다.

- 지정할 필드에 final을 사용하면 안됩니다.

 

JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 합니다.

자바는 생성자가 없을때 기본 생성자를 생성합니다.

 

문제는 생성자를 하나 이상 만들면 자바는 기본생성자를 만들지 않습니다. 이때는 기본 생성자를 직접 만들어야합니다.

 

저는 lombok라이브러리를 사용하여 아래와 같이 Member 엔티티를 만들었습니다.

 

@Getter
@Setter
@Entity
@NoArgsConstructor
@Table(name = "MEMBER")
public class Member {

   @Id
   @Column(name = "ID")
   private String id;

   @Column(name = "NAME")
   private String username;

   private Integer age;

   public Member(String id, String username) {
      this.id = id;
      this.username = username;
   }

   public Member(String id, String username, Integer age) {
      this.id = id;
      this.username = username;
      this.age = age;
   }
}

 

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

DB스키마 자동 생성  (0) 2022.05.10
@Table  (0) 2022.05.09
엔티티 매핑 시작  (0) 2022.05.09
영속성 관리 정리  (0) 2022.05.08
비영속 병합  (0) 2022.05.08