목차

Entities

ORM 서비스를 구성하는 가장 기초적인 클래스로 어플리케이션에서 다루고자 하는 테이블에 대응하여 구성할 수 있으며 테이블이 포함하는 컬럼에 대응한 속성들을 가지고 있다.

기본 필요 요건

Entity를 구성하기 위한 아래와 같은 요건이 있다.(JPA요건)

[필수] Entity annotation 선언 필요 ( 혹은 XML 설정파일에 정의 )
@Entity
public class User {
}
[필수] Argument 없는 생성자 필요
   public User(){
   }
[필수] 최상위레벨 클래스로 생성되어야 하고 enum,interface로 정의될 수 없음
[필수] final 클래스로 선언될 수 없음
[필수] Primary Key 있어야 함 : @Id라는 Annotation 표기
   @Id
   private String userId;
[권장] Serializable 인터페이스 구현
public class User implements Serializable {
   private static final long serialVersionUID = -8077677670915867738L;
}
[권장] 속성 정보 접근을 위한 getter, setter 정의
   private String userName;
 
   public String getUserName() {
      return userName;
   }
 
   public void setUserName(String userName) {
      this.userName = userName;
   }

주요 Annotations

Entity를 구성하는 주요한 Annotation은 다음과 같다.

@Entity

해당 클래스가 Entity 클래스임을 표시하는 것으로 클래스 선언문 위에 기재한다. 테이블명과 Entity명이 다를 때에는 name에 해당 테이블명을 기재한다

@Entity(name="USER_TB")
public class User {
}
@Id

해당 Attribute가 Key임을 표시하는 것으로 Attribute 위에 기재한다.

   @Id
   private String userId;
@Column

해당 Attribute와 매핑되는 컬럼정보를 입력하기 위한 것으로 Attribue위에 기재한다. 컬럼명과 Attribute명이 일치할 경우는 기재하지 않아도 됨

   @Column(name = "DEPT_NAME", length = 30)
   private String deptName;
@OneToOne, @OneToMany, @ManyToOne, @ManyToMany

테이블간 관계를 구성하기 위한 것으로 정의되는 Attribute위에 기재한다. 각각은 1:1,1:N,N:1,N;N의 관계를 표현함. 이에 대한 자세한 설명은 association_mapping 참고

   @ManyToMany
   private Set<Role> roles = new HashSet(0);
@Transient

테이블의 컬럼과 매핑되지 않고 쓰이는 Attribute를 정의하고자 할때 Attribute위에 기재한다.

   @Transient
   private String roleName;

Entity Status