[JPA] 3. Entity Mapping

2022. 7. 21. 01:09·Back-End/JPA

Entity

JPA에게 관리를 맡길 객체.

 

@Entity로 객체를 수식해준다

 

@Entity
class Member {
	public Member() {
    
    }
}

 

이때 주의해야할 점은 해당 객체는 파라미터가 없는 기본 생성자가 있어야 한다는 것이다.

 

JPA는 리플렉션 기능을 이용해 인스턴스를 동적으로 생성하기 때문에 필요하다는데 

 

리플렉션이 C#에만 있는줄 알았는데 Java에도 있어서 신기했다

 

Java Annotation에는 속성을 줄 수 있는데

 

Entity Annotation에서 사용하는 속성은 아래와 같다.

 

  • name : JPA에서 사용할 Entity name, 이름이 같은 클래스를 사용해야 하는 문제를 해결하기 위함
  • Table : Entity와 매핑할 Table 지정
    • name : Table 이름
    • uniqueConstraints : DDL(CRUD) 생성시에 유니크한 제약 생성

Entity Mapping Annotation

 

  • @Column : Column 매핑
  • @Temporal : 날짜,시간 매핑
    • Java 8 이상부터는 사용하지 않음
  • @Enumerated : enum 타입 매핑
    • 조심해야 할 점은 default mapping 방법이 ORDINAL(순서) 이기 때문에 꼭 String(이름)으로 명시해주어야 함
  • @Lob : BLOB, CLOB 매핑
    • CLOB : 엄청 나게 긴 문자열
    • BLOB : 나머지
  • @Transient : DB에 매핑 하지 않을 필드 수식
    • DB에 저장되지 않으며 메모리에만 남아있다

 

기본 키 Mapping

 

  • @Id : 직접 Id 매핑, 내가 Id를 설정해준다. 하나의 Entity에는 꼭 있어야 함
  • @GenerateValue : Id 자동 생성
    • IDENTITY : DB에게 알아서 하도록 한다 ex) MySQL - AUTO_INCREMENT
      • JPA는 INSERT Query를 날리기 전에는 Id 값을 모르므로(DB가 알아서 하므로)
        이 정책만 예외적으로 persist 했을 때 트랜잭션을 commit하지 않아도 
        INSERT Query를 날려서 Id 값을 받아온다
    • SEQUENCE : 시퀀스 오브젝트를 이용해 Id를 뽑아낸다 ex) Oracle
    • AUTO : Dialect에 따라 자동 지정, 기본값임

 

기본 키를 설정할 때 주의할 점은 다음과 같다.

  • 유일해야 함
  • Not Null
  • 변하면 안된다
  • 대체키 ex)UUID 를 이용하자

 

DDL

 

JPA는 애플리케이션 실행 시에 DDL을 자동으로 생성해주는 기능이 있다.

 

DDL은 데이터베이스 스키마 정도로 이해하면 된다

 

 

실제 라이브 서비스에서는 실수를 미연에 방지하고자 다음과 같은 옵션을 절대 사용하지 않는다

 

테스트 서버나 로컬에서만 사용하자!

 

 

출처 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

저작자표시 (새창열림)

'Back-End > JPA' 카테고리의 다른 글

[JPA] 6. 프록시와 Cascade 및 고아 객체  (0) 2022.08.04
[JPA] 5. 상속관계 Mapping & Mapped Superclass  (0) 2022.08.03
[JPA] 4. Entity간의 연관관계 Mapping  (0) 2022.07.30
[JPA] 2. Persistent에 대한 이해  (0) 2022.07.20
[JPA] 1. JPA에 대한 이해  (0) 2022.07.20
'Back-End/JPA' 카테고리의 다른 글
  • [JPA] 5. 상속관계 Mapping & Mapped Superclass
  • [JPA] 4. Entity간의 연관관계 Mapping
  • [JPA] 2. Persistent에 대한 이해
  • [JPA] 1. JPA에 대한 이해
imsongkk
imsongkk
이것저것 적어보는 개발 블로그
  • imsongkk
    이것저것
    imsongkk
  • 전체
    오늘
    어제
    • 분류 전체보기 (81)
      • 일상 (1)
      • Infra (21)
        • AWS (3)
        • Docker (8)
        • Kubernetes (9)
        • Terraform (1)
      • Trouble Shooting (9)
      • Back-End (18)
        • Spring Boot (2)
        • JPA (7)
        • HTTP 기본 (4)
        • DDD (3)
      • 소마 (4)
      • Programming (7)
        • 디자인 패턴 (7)
      • etc (19)
        • Unity (4)
        • Node.js (2)
        • React (1)
        • 리액트를 다루는 기술 (2)
        • C# (6)
        • Language (0)
        • Firebase (2)
        • 알고리즘 (1)
        • CS (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Google Analytics
    도메인
    Firebase Analytics
    Pull
    React
    clone
    포트
    EC2
    Git
    8080
    firestore
    Firebase
    Private
    소프트웨어 마에스트로 #소마 #SWM #소프트웨어 마에스트로 14기
    Push
    Terraform #테라폼 #IaC #AWS CLI
    VPC #Subnet #NAT #Region #AZ #IGW
    3000
    Repository
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
imsongkk
[JPA] 3. Entity Mapping
상단으로

티스토리툴바