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

3주차 1팀 정규회의록

by 도라프 2022. 10. 30.

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 - 효주님

댓글