카테고리 없음

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로 접근하냐의 차이