<정규 회의록>
일시 : 2022.10.27
범위 : 자바 ORM 표준 JPA 프로그래밍 - 기본편 04~07
강의 : 김영한의 스프링 부트와 JPA 실무 완전 정복
활동 : 각 멤버가 github에 올린 내용 정리본 읽고 공부한 내용에 대해 발표 및 질의응답
정리 : https://github.com/GDSC-Ewha-4th
사진 :
<스터디 내용>
4. 엔티티 매핑
from. 유리)
- @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”)
'4-1기 스터디 > Spring boot와 JPA 기초' 카테고리의 다른 글
[3주차_4팀_스터디_회의록] (0) | 2022.11.01 |
---|---|
3주차 1팀 정규회의록 (0) | 2022.10.30 |
[Spring boot와 JPA 기초 스터디] 2주차_1팀_정규회의록 (0) | 2022.10.26 |
2주차_3팀_정규회의록 (0) | 2022.10.06 |
2주차_2팀_정규회의록 (0) | 2022.10.04 |
댓글