Peony의 기록 창고 🌼
article thumbnail
[JPA] 고급 매핑
SpringBoot/JPA 기본 2022. 7. 2. 15:40

상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑이란 객체의 상속과 DB의 슈퍼타입-서브타입 관계를 매핑하는 것을 의미한다. : 조인전략(각각 테이블로 변환), 단일 테이블 전략, 구현 클래스마다 테이블 전략(서브타입 테이블로 변환) 기법이 있다. Album, Movie, Book은 모두id, name, price를 가지고 있다(공통 변수) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE"..

article thumbnail
[JPA] 다양한 연관관계 매핑
SpringBoot/JPA 기본 2022. 6. 28. 20:50

연관관계 매핑 시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 즉, 방향의 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 (단방향) 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향(객체 입장 : 단방향을 2개) 연관관계 주인 외래 키를 관리하는 곳을 연관관계 주인으로 관리하자. 주인의 반대편은 단순 조회만 가능하도록 설계하는 것이 바람직하다. 다대일 [N:1] 다대일(N:1) 단방향 ERD 가장 많이 사용하는 연관관계이다. 다대일의 반대 → 일대다 다대일 양방향 ERD 외래 키가 있는 쪽이 연관관계의 주인이다. 양쪽을 서로 참조하도록 개발한다..

article thumbnail
[JPA] 연관 관계 매핑 기초
SpringBoot/JPA 기본 2022. 6. 28. 01:24

단방향 연관관계 목표 객체와 테이블 연관관계의 차이를 이해해야 한다. 객체의 참조와 테이블의 외래 키를 어떻게 매핑하는지에 대해 이해한다. 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리가 필요 연관관계가 필요한 이유 : 객체지향 설계의 목표는 자율적인 객체들의 협력 공통체를 만드는 것이다. 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원(N)과 팀(1)은 다대일 관계이다. 객체를 테이블에 맞추어 모델링 객체를 테이블에 맞추어 모델링 코드 @Entity public class Member { @Id @G..

[JPA] JPA 소개
SpringBoot/JPA 기본 2022. 6. 21. 22:06

❓왜 jpa를 써야 할까? : SQL 중심적인 개발의 문제점 현재의 애플리케이션 개발 언어 트렌드 → 객체 지향 언어(ex : [Java, Scala, ...]) 현재 데이터베이스 세계의 헤게모니 → 관계형 DB(ex : [Oracle, MySQL, ...]) → 개발자가 객체로 데이터를 가공해도 DB에 저장할 땐, 결국 SQL을 사용한다. → SQL 중심적인 개발 ! → 객체를 관계형 DB에 관리한다는 것이 문제 ! ❓무엇이 문제일까? 1. 무한 반복, 지루한 코드 기능하나 추가해서 테이블을 생성할 때마다 CRUD SQL을 다 만들어주어야 한다. → Jdbc, MyBatis가 매핑에 도움을 주기는 하지만 그래도 개발자가 다 짜야함! Example : 회원 객체를 만들고 DB에 CRUD를 하는 기능이 있..