엔티티와 테이블을 정확하게 매핑하는것은 JPA에서 중요한 요소입니다.

따라서 다양한 어노테이션을 알아두어야 합니다.


대표적 어노테이션


테이블을 엔티티(객체)로 매핑한 예

테이블의 특성관계형 DB특성


JAVA Class를 통해 관계형 DB가 가진  요소인 엔티티,속성,기본키,연관관계등을

매핑할수가 있습니다. 각 인스턴스 튜플요소의 집합요소는 Repository객체의 검색조건에의해

ListType형태로 사용이 가능합니다.  

Entity를 사용하여 Class객체와 매핑된 테이블 객체는, 어플리케이션 내에서도

User Class(객체)라고 표현하지 않고, User Entity라고 표현합니다. ( DB와 OOP의 일치)

@Entity(name="User")
@Table(name="tbl_user")
@Access(AccessType.PROPERTY)
public class User {     //사용자라는 관계형DB가 표현하는 엔티티를 클래스를 통해 정의합니다.
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "USER_ID")
    private Long id;    // DataType과 이름을 정의하는 속성(필드,멤버)입니다.

	private String name;

	private String email;


	@Column(columnDefinition="char(7)")
	private String	itemtype;
 
	@ManyToOne    //ERD의 연관도 관계를 표현할수 있습니다.
	@JoinColumn(name = "GROUP_ID")
    private GroupInfo groupInfo;


//getter,setter 생략


Entity

속성기능기본값
name

JPA에서 해당 엔티티에 접근할때 사용되는 이름으로

지정이가능합니다.

지정을 하지 않을시 Class 이름 ( ex>User)

을 그대로 사용


Table

속성기능기본값
name실제 매핑할 테이블명

엔티티의 이름

(네임룰적용가능)


catalogcatalog기능이 있는 데이터베이스에서 관련기능 매핑
schemaschema기능이 있는 데이터베이스에서 관련기능 매핑
uniqueConstraintsDDL 생성시 유니크 제약조건을 만듬

Column

속성기능기본값
name매핑할 필드명 지정이 가능합니다.지정없을시 멤버이름 그대로사용
nullablenull 제약조건 지정가능

true

unique한컬럼에 유니크 제약을 걸때false
columnDefinition

데이터 베이스의 컬럼정보를 지정


length문자 길이 제약조건 String사용가능255
precision,scale아주큰 숫자,정밀도가 높은 소수점을 사용시

precision=19,

scale=2


특수  어노테이션

이름기능사용예
Transient데이터베이스에 저장/조회에 관여하지 않고 매핑에 제외
@Transient
private Integer temp;
Access

엔티티에 접근하는방식 지정

@Access(AccessType.FIELD)

멤버를 통해서 접근가능


@Access(AccessType.PROPERTY)

프로퍼티(세터,게터)를 통해 접근

Lob데이터 베이스 BLOB, CLOB 타잎과 매핑