코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

JPA

엔티티 매핑

2022. 7. 21. 16:27

엔티티 매핑 종류

객체와 테이블 매핑: @Entity, @Table

필드와 칼럼 매핑: @Column

기본 키 매핑: @Id

연관관계 매핑: @ManyToOne, @JoinColumn

 

 

@Entity

  • @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 
  • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
  • 주의 
    • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
    • final 클래스, enum, interface, inner 클래스 사용 X 
    • 저장할 필드에 final 사용 X
  • 속성
    • name 
      • JPA에서 사용할 엔티티 이름을 지정한다. 
      • 기본값: 클래스 이름을 그대로 사용(예: Member) 

 

@Table

  • @Table은 엔티티와 매핑할 테이블을 지정한다.

 

@Column

  • @Column(name = "NAME", nullable = false, length = 10)
  • 칼럼의 이름, null값 허용 여부, 길이 등를 설정할 수 있다.

 

@Enumerated

  • enum 타입 매핑할 때 사용한다.
  • EnumType.ORDINAL: enum 순서를 데이터베이스에 저장 => 사용 X
  • EnumType.STRING: enum 이름을 데이터베이스에 저장
  • @Enumerated(EnumType.STRING)으로 해야 나중에 참사 예방 가능하다.

 

@Temporal

  • 날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용한다.

@Lob

  • 데이터베이스 BLOB, CLOB 타입과 매핑
  • @Lob에는 지정할 수 있는 속성이 없고 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑한다.
  • CLOB : String, char[], java.sql.CLOB (문자일 경우)
  • BLOB : byte[], java.sql.BLOB (그 외)

 

@Transient

  • 특정 필드를 칼럼에 매핑하지 않음 (매핑 무시)
  • 데이터베이스에 저장 X, 조회 X
  • 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용한다.

 

 

데이터베이스 스키마 자동 생성

<property name="hibernate.hbm2ddl.auto" value="create" />
  • 개발 초기 단계는 create 또는 update 
  • 테스트 서버는 update 또는 validate 
  • 스테이징과 운영 서버는 validate 또는 none

 

기본키 매핑

@Id

  • 기본키(PK)를 지정한다.
  • 기본키의 타입은 기본타입, 기본 래퍼 유형, String, java.util.Date, java.sql.Date, java.math.BigDecimal, java.math.BigInteger 중 하나가 될 수 있다.

 

@GeneratedValue

  • 기본키(PK) 값에 대한 생성 전략을 제공한다.
  • @Id와 함께 사용된다.
  • 속성
    • strategy (기본키 생성 전략) 
    • generator (기본키 생성기)

생성 전략 (  ex) @GeneratedValue(strategy=GenerationType.IDENTITY  )

  • IDENTITY 전략은 commit 시점이 아닌 persist 시점에 DB에 쿼리가 날라간다.

 

 

'JPA' 카테고리의 다른 글

고급 매핑  (0) 2022.07.26
다양한 연관관계 매핑  (0) 2022.07.25
연관관계 매핑 기초  (1) 2022.07.22
영속성 관리  (1) 2022.07.20
JPA란?  (0) 2022.07.20
    'JPA' 카테고리의 다른 글
    • 다양한 연관관계 매핑
    • 연관관계 매핑 기초
    • 영속성 관리
    • JPA란?
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바