실무에서 너무 성능이 안 나와서 튜닝을 해야 할 경우, 코드를 확인해 보면 대부분 아래에 나열해 둔 문제가 자주 발생한다고 한다.지연 로딩과 조회 성능 최적화컬렉션 조회 최적화페이징과 한계 돌파OSIV와 성능 최적화등록 및 수정에선 거의 문제가 발생하지 않고, 90% 정도 조회할 때 성능 문제가 발생한다. 따라서 조회용 샘플 데이터를 입력한 뒤 각 문제에 맞춰 API 성능을 최적화하는 방법을 학습한다. 이번 섹션에선 주문 내역에서 추가로 주문한 상품 정보를 추가로 조회하는 API를 만든다. Order 기준으로 컬렉션인 OrderItem과 Item이 필요하다.이전 섹션에서는 xToOne 관계만 있었다. 이번에는 컬렉션인 일대다 관계(OneToMany)를 조회하고, 최적화하는 방법을 학습한다. 참고이전 섹션..
전체 글
실무에서 너무 성능이 안 나와서 튜닝을 해야 할 경우, 코드를 확인해 보면 대부분 아래에 나열해 둔 문제가 자주 발생한다고 한다.지연 로딩과 조회 성능 최적화컬렉션 조회 최적화페이징과 한계 돌파OSIV와 성능 최적화등록 및 수정에선 거의 문제가 발생하지 않고, 90% 정도 조회할 때 성능 문제가 발생한다. 따라서 조회용 샘플 데이터를 입력한 뒤 각 문제에 맞춰 API 성능을 최적화하는 방법을 학습한다. 이번 섹션에선 주문 및 배송 정보와 회원을 조회하는 API를 만들면서, 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해 본다.참고실무에서 JPA를 사용하려면 지금부터 설명하는 내용을 100% 이해해야 한다. 안 그러면 엄청난 시간을 날리게 될 수도 있다. 간단한 주문 조회 V1: 엔티티를 직접 노..

1. 자바 표준 스펙자바 표준 스펙과 구현자바는 표준 스펙과 구현으로 나눌 수 있다.자바 표준 스펙은 자바를 이렇게 만들어야 한다는 설계도이자 문서이며, 자바 커뮤니티 프로세스(JCP)를 통해 관리한다.여러 회사에서 자바 표준 스펙에 맞추어 실제 작동하는 자바 프로그램을 만든다.회사마다 각각 장단점이 있다. 예를 들어 Amazon Corretto는 AWS에 최적화되어 있다.각 회사들은 대부분 윈도우, MAC, 리눅스 같이 다양한 OS에서 작동하는 버전의 자바도 함께 제공한다. 참고다양한 자바 구현에 대해서는 다음 사이트를 참고하자. 변경의 용이자바 구현들은 모두 자바 표준 스펙에 맞도록 개발돼 있다. 따라서 오라클 Open JDK를 사용하다가 Adoptium Eclipse Temurin 자바나 Amazo..
이번 강의는 API 개발과 성능 최적화에 초점을 맞춘 강의다. 최근에는 주로 REST API로 개발하기 때문에 이전 [스프링 부트와 JPA 활용1] 편에서 구현해 둔 핵심 기능을 REST API로 구현해 보고, 스프링 부트와 JPA를 사용할 때의 API 개발 실무 노하우를 학습한다. 참고템플릿 엔진을 사용해 렌더링 하는 Controller와 API 스타일의 Controller를 둘 다 사용한다면 패키지를 분리하는 게 낫다.- 예외 처리 등을 공통으로 하는 경우가 많은데, 화면의 경우 템플릿 엔진에서 문제가 생기면 공통 에러 화면(HTML)이 나오게 된다. 그러나 API의 경우는 공통 에러용 JSON API 스펙이 나가야 한다.- 따라서 공통 처리 같은 관점에서 조금씩 차이가 발생하기 때문에 패키지를 분리..

2025년 계획도 세울 겸 2024년 마지막 회고를 작성해보려고 한다. 좀 늦었지만 이번에도 다이어리랑 캘린더나 보면서 써봐야겠다. 😊4분기(10~12월)3분기와 비슷하게 인프런 강의도 틈틈이 정리하고, 코테 챌린지도 신청해서 백준 문제를 풀어서 올렸다. 인프런에서 할인을 자주 해서 계속 사다 보니 김영한 로드맵 강의를 거의 다 모으게 됐다. 💰 그래도 강의 수로 따지면 절반 정도는 본 것 같아서 다행이다. 김영한 로드맵을 따라가는 방법은 2가지가 있다고 한다. 로드맵 순서대로 쭉 학습하는 것과 실전 강의부터 듣고 이론을 학습하는 것. 이론부터 학습한 뒤 실습을 진행하며 이해하는 게 맞다고 생각해서 로드맵을 따라가고 있었는데, UMC 6th 프로젝트 구현 내용을 정리하고 나서 생각이 바뀌었다. 예를 ..
4개월이나 지나서야 작성하는 UMC 6th 데모데이 후기 글이다. 😅 데모데이 후기만 적기엔 아쉬워서 UMC 6th ERICA 지원부터 활동 과정, 프로젝트 시 주의사항도 함께 적어보려고 한다. UMC 6th ERICA 지원 및 활동 과정지원이번 연도 1~2월에 HTML & CSS & JS 찍먹도 해보고, 창업 부트캠프도 다녀오고 이것저것 해보다가 Java 백엔드 개발자로 진로를 결정했다. 전공에서 웹 개발 관련으로 배운 게 그닥 없어서 2월엔 Spring Boot 강의를 듣고, Java 기초도 다시 정리하면서 공부했던 것 같다. 3월엔 연합 IT 동아리에 들어가려고 멋쟁이사자처럼과 UMC 중에 고민하고 있었는데, 멋사는 백엔드가 Django고, UMC는 Spring Boot & Node.js라 UMC..
저번 글에 이어서 객체지향 쿼리 언어인 JPQL의 문법을 학습한다. [자바 ORM 표준 JPA 프로그래밍 - 기본편] (9) 객체지향 쿼리 언어1 - 기본 문법1. 객체지향 쿼리 언어 소개JPA는 다양한 쿼리 방법을 지원한다. DB에서 특정 조건으로 데이터를 뽑으려면 결국 SQL이 실행돼야 한다. 이전 섹션들에서 JPA가 제공한 em.find() 같은 것 말고도, 검색 조dev-meung.tistory.com 1. JPQL(Java Persistence Query Language)경로 표현식a. 개념경로 표현식은 .(점)을 찍어서 객체 그래프를 탐색하는 것을 말한다. 아래처럼 사용해서 엔티티의 필드를 읽어오거나 엔티티와 연관된 엔티티 필드를 읽어올 수 있다.SELECT m.username # -> 상태 ..
1. 객체지향 쿼리 언어 소개JPA는 다양한 쿼리 방법을 지원한다. DB에서 특정 조건으로 데이터를 뽑으려면 결국 SQL이 실행돼야 한다. 이전 섹션들에서 JPA가 제공한 em.find() 같은 것 말고도, 검색 조건 같은 걸 적용하는 복잡한 쿼리를 어떻게든 짤 수 있어야 한다.- JPQL- JPA Criteria- QueryDSL- 네이티브 SQL- JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용실무에선 대부분 JPQL로 해결할 수 있지만 가끔가다 표준 문법으로 처리할 수 없는 경우가 생기면 다른 쿼리 방법을 사용해야 한다. 아래에서 하나씩 알아보자. JPQL가장 단순한 조회 방법은 지금까지 해온 EntityManager를 통해 find()로 조회하거나, 객체 ..