일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch6
- 2024 정보처리기사 수제비 실기
- 스프링 입문(무료)
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch1
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch12
- 스프링 mvc2 - 검증
- 스프링 mvc1 - 서블릿
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch13
- @Aspect
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 타임리프
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch4
- 스프링 mvc1 - 스프링 mvc
- 게시글 목록 api
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch3
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch2
- jpa 활용2 - api 개발 고급
- Today
- Total
목록인프런 - 스프링부트와 JPA실무 로드맵 (30)
나구리의 개발공부기록
출처 : 인프런 - 실전! 스프링부트와 JPA활용2 - API개발과 성능 최적화 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 주문 조회 V4 - JPA에서 DTO 직접 조회1) JPA에서 DTO 직접 조회하는 컨트롤러(1) 패키지 구조 추가주문 조회 V4 버전에서와 동일하게 별도의 API 스펙을 가진 DTO로 조회하는 코드들은 한곳에 모아 두는 것이 좋기 때문에 ~.repository.order에 query 패키지를 추가하여 관련된 클래스들을 모아두도록 설계Entity(비즈니스 핵심)와 화면이나 API의 스펙을 가진 관심사를 분리하도록 설계하는 것이 좋은 설계임을 잊지 말자(2) ordersV4() 추가OrderQueryDto라는 별도의 요구사항 API스펙이 담긴 D..
출처 : 인프런 - 실전! 스프링부트와 JPA활용2 - API개발과 성능 최적화 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 컬렉션인 일대다 관계를 조회할 때 최적화는 방법 알아보기1. 주문 조회 V1 - 엔터티 직접노출1) 엔터티를 직접 노출하는 컨트롤러(1) OrderApiController - ordersV1()지연로딩 성능 최적화에서 다뤄봤던 것처럼 동일하게 DB에서 꺼낸 값을 반복문으로 지연로딩 설정된 필드를 강제로 초기화하여 DB에서 데이터를 가져오도록 설정컨트롤러 등록 후 API를 호출하면 응답값은 정상적으로 반환되지만이렇게 엔터티를 직접 노출하는거는 N+1 성능문제, 확장문제, 보안문제 등등 그냥 문제 투성이기 때문에 절대 사용하지 말것package j..
출처 : 인프런 - 실전! 스프링부트와 JPA활용2 - API개발과 성능 최적화 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** API 개발 고급 - 지연로딩과 조회 성능 최적화 목표실무에서 JPA를 사용하려면 API 고급편의 내용을 100% 이해해야함, 그만큼 매우 중요함주문 + 배송정보 + 회원을 조회하는 API를 생성하고 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결1. 간단한 주문 조회 V1 - 엔터티를 직접 노출(사용하면 안되는 방식)1) 엔터티를 직접 노출하는 컨트롤러(1) OrderSimpleApiController - ordersV1()생성 및 실행 - 첫번째 문제 발생매우 간단하게 리포지토리에서 전체 내역을 조회한 결과를 받은 List를 그대로 ..
출처 : 인프런 - 실전! 스프링부트와 JPA활용2 - API개발과 성능 최적화 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용 ** 스프링부트와 JPA활용1 - 웹 애플리케이션 개발에서 진행한 프로젝트를 가지고 이어서 진행** API를 개발하기 때문에 Postman이 필수(그 외 비슷한 기능을 하는 프로그램이 있다면 준비)1. 회원 등록 API화면을 템플릿 엔진으로 만드는 경우도 존재하지만 대부분은 클라이언트와 서버를 구분해서 개발하기에 API통신으로 개발하는 경우가 많음특히 추세(2019년 강의 기준)가 마이크로서비스 아키텍처로 바뀌어가면서 더 API로 통신해야 할 일이 늘어가고 있음1) 패키지 작성코드 작성 전 패키지 작성을 위한 고민을 해야하는데, 김영한님은 주로 템..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 경로 표현식1) 정의.(점)을 찍어서 객체 그래프를 탐색하는 것상태필드, 단일 값 연관필드, 컬렉션 값 연관필드가 내부적으로 동작방식이 다르기 때문에 구분해서 이해해야함select m.username # 상태 필드 from Member m join m.team t # 단일 값 연관 필드 join m.orders o # 컬렉션 값 연관 필드where t.name = '팀A' 2) 용어 정리(1) 상태 필드(state field)단순히 값을 저장하기 위한 필드(2) 연관 필드(association field)연관관계를 위한 필드(3) 단일 값 연..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 조인join쿼리를 실습 하기 위해 Member와 Team을 양방향 연관관계 매핑을 하고, 연관관계 편의 메서드를 작성하여 값을 생성중복 쿼리 발생 방지를 위해 @ManyToOne 맵핑에 LAZY를 적용 (관련글)1) 내부조인inner 생략 가능// 이너조인 (inner 생략 가능)String query = "select m from Member m inner join m.team t";List result= em.createQuery(query, Member.class) .getResultList();2) 외부 조인left, right 조인을 지원..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 객체지향 쿼리 언어 소개 1) JPQL(1) JPA의 한계JPA를 사용하면 엔터티 객체를 중심으로 개발하고 테이블은 매핑만 하는데 검색을 할 때도 테이블이 아닌 엔터티 객체를 대상으로 검색을 해야 함그러나 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능하기 때문에 애플리케이션이 필요한 데이터만 DB에서 불러오려면 검색 조건이 포함된 SQL필요함(2) 문제 해결이런 문제를 해결하기 위해 JPA는 SQL을 추상화한 JPQL이라는 객체지향 쿼리 언어를 제공함SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOI..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 실전예제 전까지는 DB URL 설정을 test로 설정하여 실습 ** 실전예제는 jdbc.url 설정을 jpashop으로 변경해서 진행1. 기본값 타입1) JPA의 데이터 타입(1) 엔터티 타입@Entity로 정의하는 객체데이터가 변해도 식별자로 지속해서 추적이 가능함ex) 회원 엔터티의 키나 나이 값을 변경해도 식별자로 인식이 가능함(2) 값 타입int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적이 불가능함ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체됨2) 값 타입..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 실전예제 전까지는 DB URL 설정을 test로 설정하여 실습 ** 실전예제는 jdbc.url 설정을 jpashop으로 변경해서 진행1. 프록시1) 프록시 기초(1) em.getReference()em.find() 메서드는 DB를 통해서 실제 엔터티 객체를 바로 조회하는 것em.getReference() 메서드는 DB조회를 미루고 가짜(프록시) 엔터티 객체를 조회, 프록시에 값이 없으면 DB에서 값을 조회해옴getReference()메서드를 호출하는 순간 DB와 무관하게 영속성 컨텍스트에 프록시 객체가 생성됨(2) 로그 확인새로운 멤버를 생성하여 persist..
출처 : 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 실전예제 전까지는 DB URL 설정을 test로 설정하여 실습 ** 실전예제는 jdbc.url 설정을 jpashop으로 변경해서 진행1. 상속관계 매핑1) 관계형 DB의 상속관계관계형 데이터베이스는 상속관계가 없음슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사함객체의 상속 구조와 슈퍼타입 서브타입 관계를 매핑함(1) 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법각각의 정규화가 잘 된 테이블로 변환 -> 조인 전략통합 테이블로 변환 -> 단일 테이블 전략서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략2) 주요 애노테이션(1) ..