(스프링 JPA 기초강좌)JPA엔티티매핑 @Entity, @Table, @Column에 대한 소개 자료 입니다. JPA 처음 하시는 분들 간단히 살펴보세요.
@Entity 어노테이션은 엔티티 클래스임을 지정하며 테이블과 매핑된다.
@Table 어노테이션은 엔티티가 매핑될 테이블을 지정하고 생략시 엔티티 클래스 이름과 같은 테이블로 매핑된다. 대부분의 JPA Persistence 제공자들은 테이블 생성 기능을 제공한다.
2. 엔티티 매핑(@ENTITY, @TABLE)
@Entity : 엔티티 클래스임을 지정하며 테이블과 매핑된다.
@Table : 엔티티가 매핑될 테이블을 지정하고 생략시 엔티티 클래스 이름과
같은 테이블로 매핑된다. 대부분의 JPA Persistence 제공자들은 테이블 생성 기
능을 제공한다.
Emp 클래스를 MYEMP라는 테이블면으로 매핑하는 경우
@Entity
@Table(name="MYEMP")
public class Emp ...
아래처럼 empno칼럼에 대해 고유 제약조건을 지정할 수 있다.(중복불가!)
@Entity
@Table(name="MYEMP",
uniqueConstraints= {@UniqueConstraint(columnNames={"EMPNO"})})
public class Emp ...
3. 엔티티 매핑(@COLUMN) - 1
@Column 어노테이션은 칼럼의 이름을 이용하여 지정된 필드나 속성을 테이
블의 칼럼에 매핑 한다. 생략되면 속성과 같은 이름의 칼럼으로 매핑된다.
empno 속성을 테이블의 emp_no 컬럼으로 매핑
한 엔티티의 속성을 여러 테이블의 칼럼에 다중 매핑 하는 경우.(city 속성은 EMP 테이블 및
CUSTOMER_CITY 테이블에 동시에 매핑된다.)
@Column(name="EMP_NO")
protected Integer empno;
@Entity
public class Emp {
@Column(name="CITY",
table="CUSTOMER_CITY")
protected String city;
…
//칼럼에 대해 insert, update 허용여부를 속성으로
표시
@Column(name="EMP_NO", insertable=false,
updatable=false)
protected Integer empno;