카테고리 없음
JPA 필드와 칼럼 매핑
tongnamuu
2021. 7. 19. 21:35
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.id.new_generator_mappings" value="ture" />
필드와 칼럼 매핑
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
}
@Column : 컬럼 매핑 - 객체를 테이블칼럼에 매핑
@Enumerated : 자바 enumtype 매핑
EnumType.ORDINAL : DB에 숫자로 저장, 크기는 작지만 Enum이 수정(ex. 순서가 바뀌거나)되는 경우 버그발생
EnumType.STRING : Enum의 string 값을 데이터베이스에 저장, Enum이 수정되거나 추가되도 안전
@Temporal : 날짜 타입 매핑
Temporal.DATE : 날짜
Temporal.TIME : 시간
Temporal.TIMESTAMP : 날짜와 시간
@Lob : BLOB, CLOB 타입 매핑
LOB은 text, 그래픽 이미지, 비디오 사운드 등 구조화 되지 않은 대형 데이터를 저장
CLOB : 문자 대형 객체
BLOB : 이진 대형 개체( 이미지 동영상 mp3)
@Transient : 특정 필드를 DB에 매핑하지 않음
특정 필드를 DB에 매핑하지 않는다 -> 디비에 저장하지도 않고 조회하지도 않음, 객체에 어떤 값을 보관할 때 사용
@Access : JPA가 엔티티에 접근하는 방식을 지정
직접 필드로 접근하나 혹은 getter로 접근하냐의 차이