ORM 서비스를 구성하는 가장 기초적인 클래스로 어플리케이션에서 다루고자 하는 테이블에 대응하여 구성할 수 있으며 테이블이 포함하는 컬럼에 대응한 속성들을 가지고 있다.
Entity를 구성하기 위한 아래와 같은 요건이 있다.(JPA요건)
@Entity public class User { }
public User(){ }
@Id private String userId;
public class User implements Serializable { private static final long serialVersionUID = -8077677670915867738L; }
private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }
Entity를 구성하는 주요한 Annotation은 다음과 같다.
해당 클래스가 Entity 클래스임을 표시하는 것으로 클래스 선언문 위에 기재한다. 테이블명과 Entity명이 다를 때에는 name에 해당 테이블명을 기재한다
@Entity(name="USER_TB") public class User { }
해당 Attribute가 Key임을 표시하는 것으로 Attribute 위에 기재한다.
@Id private String userId;
해당 Attribute와 매핑되는 컬럼정보를 입력하기 위한 것으로 Attribue위에 기재한다. 컬럼명과 Attribute명이 일치할 경우는 기재하지 않아도 됨
@Column(name = "DEPT_NAME", length = 30) private String deptName;
테이블간 관계를 구성하기 위한 것으로 정의되는 Attribute위에 기재한다. 각각은 1:1,1:N,N:1,N;N의 관계를 표현함. 이에 대한 자세한 설명은 association_mapping 참고
@ManyToMany private Set<Role> roles = new HashSet(0);
테이블의 컬럼과 매핑되지 않고 쓰이는 Attribute를 정의하고자 할때 Attribute위에 기재한다.
@Transient private String roleName;