3주차 1팀 정규회의록
<정규 회의록>
일시 : 2022.10.30
범위 : 자바 ORM 표준 JPA 프로그래밍 - 기본 4-7
강의 : 자바 ORM 표준 JPA 프로그래밍
활동 :
정리 : https://github.com/GDSC-Ewha-4th
사진 :
내용:
섹션 4 @승연님
엔티티 매핑 - 기본키 매핑까지
객체와 테이블 매핑
@Entity가 붙은 클래스는 JPA가 관리 -> 기본 생성자 필수
엔티티 속성은 기본값이 클래스 이름을 그대로 사용
데이터 베이스 스키마 자동 생성
DDL을 애플리케이션 실행시점에서 자동 생성 : 기존의 방식이 아니라 객체를 만들고 테이블을 만들어주는 순서로 만듬
=> 개발 단계에서만 생성해야함
주의할 점 : 운영 장비에는 create, create-droㅔ, update를 사용하면 안되고 따로 만들어야함
DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고 JPA실행 로직에는 영향을 주지 않느다.
@Enumerated 주의 Ordinal 사용X => role type 중복 하지 말기!
섹션 5 @서영님
연관관계가 필요한 이유 => 협력 관계를 만들 수가 없다.
단방향 연관관계 = 외래키가 있는 테이블에 @ManytoOne사용
양방향 -> @OneTomany 사용
연관관계의 주인만이 외래키를 관리할 수 있고 주인이 아니면 드ㅇ록이나 수정을 할 수가 없다. 외래케가 있는 곳을 주인으로 지정한다.
매핑할 때 가장 많이 하는 실수
연관관계 주인에 값이 입력되지 않는 실수 : 양방향 매핑 시 양쪽에 주인을 설정해줘야함
양방향 매핑 시 무한 루프 조심
양방향 매핑은 처음에 단방향 매핑으로 설게하고 만일 JPQL에서 역방향으로 탐색할 때 추가한다. => 양방향 매핑을 반대방향으로 매핑
섹션 6 @효주님
다양한 연관관계
- 다중성 : 다대일을 가장 많이 사용. 다대다는 실무에서 쓰면 안됨.
테이블은 외래키 하나로 양쪽에 조인 가능해서 방향이라는 개념이 없다!
=> 객체는 참조용 필드가 있어야 참조 가능 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향 (사실 단방향이 두개있는 것임)
mappedBy = "변수명" 넣어줘야 함
일대다 단방향은 권장하지 않음 => 무조건 member 족에 외래키가 들어가고 1쪽이 연관관계의 주인 두번이 들어가는 것으로 UPDATE SQL 추가로 실행해야함 @JoinColumn을 꼭사용해야함
일대다 양방향은 매핑이 공식적으로 존재하지 않고 웬만하면 다대일 양방향 사용하기
섹션7 @소현님
상속 관계 매핑
- 관계형 데이터베이스는 상속 관계가 없다.
- 슈퍼타입과 서브타입 관계가 객체의 상속과 유사하다.
- 상속관계 매핑: 객체의 상속 구조와 DB의 슈퍼타입과 서브타입 관계를 매핑하는 것이다.
- 관계형 DB의 설계는 논리 모델로 설계한다. ex 공통적인 데이터를 묶는 슈퍼타입으로부터 서브타입을 설계한다.
- 슈퍼타입과 서브타입을 논리모델로 구현하는 방법.
- 조인 전략 :
- ITEM이라는 Table을 만들고 ALBUM테이블 MOVIE테이블 BOOK테이블을 만든다.
- ITEM Table과 ALBUM 테이블 각각 하나씩 두번의 Insert를 진행함.
- JOIN을 통해 가져온다. (구분하는 column을 둬서 구분한다.
- 어떤 지원 방법으로 구현하든 매핑하도록 지원해준다.
- 조인 전략 :
- 단일 테이블 전략:
- 논리모델은 한 테이블에 합쳐서 Pk는 그대로 두고 column을 다 넣고 DTYPE이라는 column을 통해 구분한다
- 구현 클래스마다 테이블 전략
- 객체의 각각의 TABLE에 겹쳐지는 column을 다 따로 입력해서 각각의 table을 따로 만든다.
MappedSuperClass
상속관계와의 매핑하고는 관계가 없고 공동 매핑 정보가 필요할 때 사용한다.
다음 스터디는 11/7 10시!
섹션 8 - 소현님
섹션 9 - 서영님
섹션 10 - 승연님
섹션 11 - 효주님
'4-1기 스터디 > Spring boot와 JPA 기초' 카테고리의 다른 글
[4주차_4팀_스터디_회의록] (0) | 2022.11.01 |
---|---|
[3주차_4팀_스터디_회의록] (0) | 2022.11.01 |
3주차_2팀_정규회의록 (0) | 2022.10.27 |
[Spring boot와 JPA 기초 스터디] 2주차_1팀_정규회의록 (0) | 2022.10.26 |
2주차_3팀_정규회의록 (0) | 2022.10.06 |
댓글