ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JPA] 엔티티 매핑
    JPA 2020. 4. 6. 15:31

    @Entity

    : 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다.

    • 기본 생성자 필수
    • final 클래스, enum, interface, inner 클래스 사용 할 수 없다.
    • 저장할 필드에 final을 사용하면 안되다.

     

    @Table

    : 엔티티와 매핑할 테이블을 지정. (생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용)

    옵션

    • name : 매핑할 테이블 이름
    • catalog : catalog 매핑
    • schema : 데이터베이스에서 schema를 매핑
    • uniqueconstraints : DDL 생성 시에 유니크 제약조건을 만든다. 

     

    필드와 컬럼 매핑 

     

    @ Column : 컬럼을 매핑한다.

    • nullable(DDL) : null 값의 허용 여부를 설정. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다.
    • unique(DDL) : 유니크 제약조건을 걸 때 사용 한다.
    • colum Definition(DDL) : 데이터베이스 컬럼 정보를 직접 줄 수 있다.
    • length : 문자 길이 제약조건
    • precision, scale(DDL) : BigDecimal 타입에서 사용한다. precision은 소수점을 포함한 전체 자릿수를, sclae은 소수의 자릿수
    •  

    @Enumerated : 자바의 enum 타입을 매핑한다.

    • EnumType.ORDINAL : enum 순서를 데이터베이스에 저장
    enum RoleType {
    	ADMIN, USER
    }
    
    
    ...
    
    @enumerated(EnumType.ORDINAL)
    private RoleType roletype;
    
    member.setRolType(RoleType.ADMIN); // -> DB에 숫자 0으로 저장 된다.
    
    

     

    • EnumType.STRING : enum 이름을 데이터베이스에 저장
    enum RoleType {
    	ADMIN, USER
    }
    
    
    ...
    
    @enumerated(EnumType.STRING)
    private RoleType roletype;
    
    member.setRolType(RoleType.ADMIN); // -> DB에 문자 ADMIN으로 저장 된다.
    
    

     

     

    @Temporal : 날짜 타입을 매핑한다.

    • TemporalType.DATE : 날짜. (예 2013-10-11)
    • TemporalType.TIMe : 시간. (예 11:11:11)
    • TemporalType.TimeStamp : 날짜와 시간 (예 2013-10-11 11:11:11)

    -> 자바의 Date 타입에는 년월일 시분초가 있지만 데이버테이스에는 date(날짜), time(시간), timestamp(날짜와 시간)라는 세 가지 타입이 별도로 존재

    @Temporal(TemporalType.DATE)
    private Date date; // 날짜 
    
    @Temporal(TemporalType.TIMe)
    private Date time; // 시간
    
    
    @Temporal(TemporalType.TIMESTAMP)
    private Date timestamp; // 날짜와 시간

     

    @Lob : BLOB, CLOB 타입을 매핑한다.

    @Transient : 특정 필드를 데이터베이스에 매핑하지 않는다.

    @Access : JPA가 엔티티 데이터에 접근하는 방식을 지정한다.

     

     

     

     

     

     

    'JPA' 카테고리의 다른 글

    [JPA] 영속성 컨텍스트  (0) 2020.06.28
    [JPA] 엔티니 매니저  (0) 2020.06.28
    [JPA] 프로그래밍 : 엔티티 상태  (0) 2020.04.03
    [JPA] 프로그래밍 : 1대다 맵핑  (0) 2020.04.03
    [JPA] 프로그래밍 : 엔티티  (0) 2020.04.02

    댓글

Designed by Tistory.