분류 전체보기231 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (7-1) 고급매핑 들어가며 7강은 1편과 2편으로 나눠 진행하였다. 7.1 상속 관계 매핑 관계형 디비에는 객체지향 언어에서 다루는 상속 개념이 없다 대신 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사 ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 디비의 슈퍼타입 서브타입 관계를 매핑하는 것 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현 시 3가지 방법 존재 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조회할 때 조인을 사용 (JPA에서는 조인 전략이라 함) 통합 테이블로 변환 : 테이블을 하나만 사용해서 통합 (JPA에서는 단일 테이블 전략이라 함) 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블을 만든다 (JPA에서는 구현 클래스마다 테이블 전략이라.. 2022. 8. 17. 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (6) 다양한 연관관계 매핑 들어가며 6강은 연관관계를 맺을때 일대일 / 다대일 / 일대다 / 다대다 모든 케이스의 방향에 대한 설명이다. 연관관계 매핑 시 다중성 / 단방향, 양방향 / 연관관계 주인 3가지를 고려해야 함 다중성 다대일(@ManyTonOne) / 일대다 / 일대일 / 다대다 다중성을 판단하기 어려울 때는 반대방향을 생각해보면 된다. 일대다의 반대방향을 항상 다대일이고, 일대일이나 다대다의 반대방향은 동일 단반향, 양방향 테이블은 외래 키 하나로 조인을 사용해서 양방향으로 쿼리가 가능하므로 사실상 방향이라는 개념 없음 객체는 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있고, 한쪽만 참조하는 것을 단방향 / 양쪽이 서로 참조하는 것을 양방향 관계라 한다. 연관관계의 주인 엔티티를 양방향으로 매핑하면 2곳에서 .. 2022. 8. 12. JPA - N+1 문제와 해결방법 정리 들어가며 JPA를 사용하다 보면 N+1 문제를 한번씩은 겪어봤을것이다. 하지만 콘솔창을 자세히 보지 않았다면 그냥 지나쳤을 수도 있다. N+1의 문제가 발생한다고 해서 결과에 문제가 생기는 것은 아니지만 성능에는 문제가 생길 수 있기 때문에 확실히 인지해서 문제를 해결하는 것이 좋다. N+1 문제란 무엇인가? 연관관계가 설정된 엔티티를 조회할 때 조회 된 데이터의 갯수만큼 조회 쿼리가 추가로 발생하는 경우는 말한다. 이해를 돕기 위해 예를 들면 팀과 회원의 연관관계에서 팀을 조회했을때 팀에 속한 회원이 10명 있다고 가정할때 팀을 조회할때 연관관계를 가지고 있는 회원을 조회하는 쿼리가 10번(n번) 발생하는 것을 의미한다. N+1 == 10번(회원) + 1번(팀) Fetch 모드에 따른 결과 (즉시 로딩.. 2022. 8. 9. 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-2) 연관관계 매핑 기초 들어가며 5강은 1편과 2편으로 나눠 진행하였다. 5강에서는 연관관계에 대해서 나올 수 있는 모든 케이스를 설명을 하여 다소 헷갈리는 부분들이 있었다. 여러번 읽어보고 케이스들을 숙지해야 될 것 같다. 5.3 양방향 연관관계 회원과 팀은 다대일 / 반대로 팀에서 회원은 일대다 관계 일대다 관계는 여러 건과 연관관계를 맺을 수 있으므로 컬렉션을 사용 5.3.1 양방향 연관관계 매핑 일대다 관계이므로 팀 엔티티에 컬렉션인 List 컬렉션 추가를 한다. 팀에서는 @OneToMany 로 매핑한다. (일대다 매핑정보) mappedBy 속성은 양방향 매핑일 때 사용하며 반때쪽 매핑의 필드 이름을 값으로 준다. 반대쪽 매핑이 Member.team 을 사용하므로 team 을 값으로 준다. 5.4 연관관계의 주인 객체에.. 2022. 8. 7. @NotFound 어노테이션 들어가며 해당 어노테이션은 연관관계에서 조인한 대상의 값이 존재하지 않는 경우에 발생하는 EntityNotFoundException의 발생을 무시할 수 있는 어노테이션 옵션을 가지고 있다. 설계가 조인 대상의 값이 없더라도 진행되도록 하기위해서는 @NotFound 어노테이션의 IGNORE 옵션을 사용하면 된다. @NotFound 옵션별 설명 및 예외발생 @NotFound(action = NotFoundAction.IGNORE) 와 @NotFound(action = NotFoundAction.EXCEPTION) 이렇게 두가지가 있다. 먼저 IGNORE 옵션은 아래 설명에도 나와 있듯이 존재하지 않더라도 무시하는 것이고 EXCEPTION 옵션은 EntityNotFoundException을 발생시킨다. EXC.. 2022. 8. 3. 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-1) 연관관계 매핑 기초 들어가며 5강은 1편과 2편으로 나눠 진행하였다. 5강에서는 연관관계 매핑에 대한 단방향과 양방향 매핑법과 연관관계의 주인에 대한 내용이었다. 핵심 키워드 3가지 방향 : 단방향과 양방향이 있음. 한쪽만 참조하는 것을 단방향, 양쪽 모두 참조하는 것을 양방향 관계라 한다. 다중성 : 다대일, 일대다, 일대일, 다대다 다중성이 있다. 연관관계 주인 : 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 5.1 단방향 연관관계 객체 연관관계 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺으면 회원 객체와 팀 객체는 단뱡향 관계다. 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 팀은 회원을 알 수 없다. 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테.. 2022. 8. 1. 이전 1 ··· 8 9 10 11 12 13 14 ··· 39 다음