본문 바로가기
  • GDG on campus Ewha Tech Blog
4-1기 스터디/Spring boot와 JPA 기초

3주차_2팀_정규회의록

by 유일리 2022. 10. 27.

<정규 회의록>

일시 : 2022.10.27

범위 : 자바 ORM 표준 JPA 프로그래밍 - 기본편 04~07

강의 : 김영한의 스프링 부트와 JPA 실무 완전 정복

활동 : 각 멤버가 github에 올린 내용 정리본 읽고 공부한 내용에 대해 발표 및 질의응답

정리 : https://github.com/GDSC-Ewha-4th

 

GDSC-Ewha-4th

GDSC-Ewha-4th has 5 repositories available. Follow their code on GitHub.

github.com

사진 :


<스터디 내용>

4. 엔티티 매핑

from. 유리)

  1. @Entity : JPA가 관리, JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
  • 데이터베이스 스키마 자동 생성 :  jpa에서는 애플리케이션 로딩 시점에 create db로 테이블이 생성되는 기능이 있다, 이것의 장점은 원래 개발할 때 테이블먼저 만들고 객체로 돌아가게 되는데, jpa에는 객체를 다 매핑해놓으면 알아서 필요한 테이블을 만들어 준다. 그리고 중요한게 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL을 생성해주는 것이다. 이렇게 생성된 DDL은 운영이 아닌 개발에서만 사용해야 한다. 
  • DDL 생성 기능 : DDL은 데이터를 생성, 수정, 삭제하는 등 데이터베이스를 정의하는 언어, 유니크 제약조건을 추가하면 jpa 실행 로직, 런타임에는 영향을 주지 않고 DDL만 생성
  • 필드와 컬럼 매핑 : @Column, @Temporal, @Enumerated, @Lob, @Transient
  • 기본 키 매핑 : 직접 할당 - @Id, 자동 할당 - identity 전략, sequence 전략, table 전략이 있고 auto는 셋 중 하나를 방언에 따라 자동 지정되는 방식
  • 권장하는 식별자 전략 : pk의 기본 조건으로는 null이 아닌 값이 있어야 하고 유일하며 먼 미래까지 변하면 안된다. 하지만 변하지 않는 자연키를 찾기는 어렵기 때문에 대체키를 사용하는 것을 권장한다.

5. 연관관계 매핑 기초

from. 지은)

  • 연관관계가 필요한 이유 : ‘객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.’
  • 객체의 양방향 관계 : 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다.
  • 테이블의 양방향 연관관계 : 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리, MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐 (양쪽으로 조인할 수 있다.)
  • 연관관계의 주인 : 외래 키가 있는 있는 곳을 주인으로 정해라, 양방향 매핑시 연관관계의 주인에 값을 입력해야 한다.비즈니스 로직을 기준으로 연관관계의 주인을 선택하면 안됨, 연관관계의 주인은 외래 키의 위치를 기준으로 정해야함

6. 다양한 연관관계 매핑

from. 현정)

  • 연관관계 매핑시 고려사항 : 다중성, 단방향, 양방향, 연관관계의 주인
  • 다중성 : 다대일: @ManyToOne , 일대다: @OneToMany , 일대일: @OneToOne , 다대다: @ManyToMany
  • 단방향, 양방향 : 테이블 (외래 키 하나로 양쪽 조인 가능 , 사실 방향이라는 개념이 없음) / 객체 (참조용 필드가 있는 쪽으로만 참조 가능 , 한쪽만 참조하면 단방향 , 양쪽이 서로 참조하면 양방향)
  • 연관관계의 주인 : 외래 키를 관리하는 참조
  • 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음
  • 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데

7. 고급매핑

from. 소정)

1. 상속관계 매핑

  • 관계형 데이터베이스는 상속 관계X
  • 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사
  • 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑

2. 주요 어노테이션

  • • @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략
  • @DiscriminatorColumn(name=“DTYPE”)
  • @DiscriminatorValue(“XXX”)

댓글