Jun's note

[JPA] 엔티티(Entity), 연관관계 매핑 본문

Programming/JPA

[JPA] 엔티티(Entity), 연관관계 매핑

junning 2022. 1. 13. 20:27
728x90

1. 엔티티 매핑 소개

  • 객체와 테이블 매핑: @Entity, @Table
  • 필드와 컬럼 매핑: @Column   (엔티티 속성)
  • 기본 키 매핑: @Id  (식별자)
  • 연관관계 매핑: @ManyToOne,@JoinColumn

위 어노테이션을 적어야 JPA가 관리할 수 있다. 잊지말고 적기!!

 

위에서 말한 4가지 엔티티 매핑에 대해 정리해본다.

 

 

2. 객체와 테이블 매핑

  • @Entity
    • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
  • @Table

 

3. 필드와 컬럼 매핑

  • @Column
  • @Enumerated
    • EnumType.STRING 사용하기!!! (EnumType.ORDINAL를 사용하면, 정의된 숫자로 저장되기 때문에 나중에 데이터끼리 혼란을 줄 수 있음, 그리고 ORDINAL이 기본값이기 때문에 무조건 STRING으로 설정해줘야한다.) 
  • @Temporal (날짜타입)
    • TemporalType.DATE
    • TemporalType.TIME
    • TemporalType.TIMESTAMP
  • @Lob
  • @Transient

 

4. 기본 키 매핑

  • @Id  (식별자라고 명시)
  • @GeneratedValue (값 자동 생성)
    • IDENTITY : 데이터베이스에 위임(MYSQL)
    • SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용(ORACLE)
    • TABLE
    • AUTO : 방언에 따라 자동 지정, 기본값

 

5. 연관관계 매핑

  • 용어 이해
    • 방향(Direction): 단방향, 양방향
    • 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
    • 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요
  • 테이블과 객체의 다른점
    • 테이블외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
    • 객체참조를 사용해서 연관된 객체를 찾는다.
  • 방향
    • 단방향 : 객체A만 객체B로 이동할 수 있고, B는 A로 이동하지 못한다.
    • 양방향 : 서로가 이동할 수 있다.
      • 연관관계의 주인과 mappedBy
        • 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개다. (테이블은 양방향, 객체는 단방향 2개)
        • 규칙
          • 연관관계의 주인만이 외래 키를 관리(등록, 수정) 
          • 주인이 아닌쪽은 읽기만 가능
          • 주인은 외래키가 있는 쪽!!!!!!!  (외래키는 N 즉 다)
      • 양방향 설계시 주의!!!!  처음부터 양방향 설계 X, 단방향으로 설계한 후 필요하면 추가하는 식으로 구현하기

 

 

번외) 데이터베이스 스키마 자동 생성

- DDL이란? 테이블을 대상으로 CREATE, ALTER, DROP, TRUNCATE 를 수행하는 데이터 정의어다.

- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성

- 주의!!!! 운영 장비에는 절대 create, create-drop, update 사용하면 안된다.  (create: 애플리케이션을 새로 실행할때마다 기존에 있던 데이터 삭제하고 다시 테이블 생성)

 


참고
강의 : www.inflearn.com/course/ORM-JPA-Basic
서적 : <자바 ORM 표준 JPA프로그래밍> 김영한
Comments