개발놀이터

JPA Entity 매핑 본문

JPA/JPA

JPA Entity 매핑

마늘냄새폴폴 2021. 8. 21. 18:59

*엔티티 매핑


@Entity
-@Entity가 붙은 클래스는 JPA가 관리, 엔티티라고 한다.
-JPA를 사용해서 테이블과 매핑할 클래스는 @Entity필수 
-주의
1. 기본생성자 필수
2. final 클래스, enum, interface, inner 클래스 사용 X
3. 저장할 필드에 final 사용 X


*@Table(name = "Member")
-테이블 명과 매핑시킬 수 있음
-관례는 클래스 이름이 테이블 이름과 매핑됨


*@Column(name = "username")
-컬럼명을 매핑 시키는 어노테이션
-객체를 사용할 때 변순는 name으로 사용하고 싶고 실제 디비상에서의 컬럼은 username이라고 되어있을 때 매핑하기 위한 어노테이션

@Column의 속성
-name = "username" 필드와 매핑할 테이블의 칼럼 이름
-insertable = true or false 데이터베이스에 삽입 여부를 체크하는 속성, 기본값은 true
-updatable = true or false 데이터베이스에 업데이트 여부를 체크하는 속성, 기본값은 true
-nullable = true or false 처음 테이블이 create 될 때 notnull조건을 붙이는 속성, 기본값은 true notnull이 안붙는다. false를 붙이면 notnull이 붙는다. persistence.xml에서 hibernate.hbmddl.auto의 속성을 create로 하는 테스트 환경일 때 자주 쓰이는 것으로 보임
-unique = true or false 처음 테이블이 create 될 때 유니크키를 만들어준다 현업에서는 자주 쓰이진 않는 모양 (이름이 랜덤으로 붙이기 때문)
-length = 10 문자의 길이를 지정할 때 사용
-columnDefinition = "varchar(100) default 'EMPTY'" 칼럼의 정보를 커스텀할 수 있는 속성이다. 테스트 환경에서만 사용할 듯 보임


*@Id
-PK를 매핑하는 어노테이션


*@Enumerated(EnumType.STRING)
-Enum 클래스를 사용하고 싶을 때 디비와 매핑하기 위해서는 @Enumerated를 사용해야 한다.
-EnumType.STRING으로 하게되면 VARCHAR와 매핑된다.
-EnumType.ORDINAL은 사용하면 안됨 ORDINAL : enum 순서를 데이터베이스에 저장, STRING : enum 이름을 데이터베이스에 저장


*@Temporal(TemporalType.TIMESTMP or DATE or TIME)
-자바의 Date 타입을 디비에 매핑 시킬 때 쓰는 어노테이션
-자바의 Date 타입은 날짜와 시간 둘다 찍어주는데 디비에서는 날짜, 시간, 날짜와시간 이 세가지를 모두 구분해서 사용한다.
-날짜만 디비에서 매핑하고 싶으면 TemporalType.DATE, 시간을 매핑하고 싶으면 TemporalType.TIME, 날짜와 시간 모두 매핑하고 싶으면 TemporalType.TIMESTAMP


*@Lob
-VARCHAR를 넘어서는 큰 데이터를 매핑해야 할 때 사용하는 어노테이션
-@Lob private String name 이라면 MySql기준 LONGVARCHAR @Lob private int age 라면 MySql기준 BIGINT 이렇게 매핑해준다.


*@Transient 
-디비와 관계없이 메모리에서만 사용하고 싶을 때 @Transient 어노테이션을 달아준다. (하지만 이런 경우는 드물듯)

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

JPA 상속관계 매핑  (0) 2021.08.23
JPA 연관관계의 주인  (0) 2021.08.23
JPA 기본키 매핑  (0) 2021.08.21
JPA 영속성컨텍스트  (0) 2021.08.21
JPA 시작하기  (0) 2021.08.21