spring 8

[코드 리뷰] - 배운 점 (프로젝트 전반에 걸치 n+1 문제 해결)

"내가 맡은 부분은 프로젝트 전반에 걸쳐 고질적인 문제인 N puls 1 문제를 해결하는 것이었다.N +1 문제는 크게 2가지로 나눌 수 있다,첫 번째는, Lazy fetch에 의한 N+1이고.두 번째는, 루프에 의한 반복접근 N+1문제이다." [개선 사항]1. 우선 Lazy Fetch에 대한 문제를 우선적으로 해결했다.- 프로젝트 엔티티 내에 fetch 전략이 EAGER로 된 경우들이 있었기 때문에 LAZY 전략으로 바꿔주었다.- 그 다음 레포지토리가 사용된 메소드를 하나씩 확인해서 fetch join이 필요한 필드들을 확인하였다.- 필요한 필드들에 대해서는 여러 방법들이 존재했다. 1) 아주 간단하게 @EntityGraph사용하기 - 해당 프로젝트에 내가 적용한 방법으로 확장성을 고려해 우선 En..

카테고리 없음 2025.09.10

[코드 리뷰] 배운 점 (게임 전적 데이터 업데이트를 통해 추천 서비스 설계)

" 내가 리뷰한 코드는 Lol 게임의 상위 티어의 전적을 업데이트하여 상위 티어의 [추천템트리, 추천 시작템, 추천 룬, 추천스킬트리, 추천 신발 등]의 정보를 db에 일괄 저장하여일반 사용자 즉, 저티어 사용자에게 추천해주는 서비스를 구성하는 코드였다. " 우선 코드의 Refactoring과정을 이야기해보겠다. [이전의 코드]Spring Batch를 활용해 배치 서버로 일정 시간(일일 2회, 새벽 시간)에 상위 티어 전적을 업데이트해주는 요청을 보낸다. [이전 코드의 문제점]Spring Scheduler를 사용하면 서버에 대한 부화가 커질 수 있어 안정성에 위험이 있었다. ※Spring Batch는 대량의 데이터를 일괄적으로 처리하는 데 특화되어 있고,※ MQ는 분산 및 비동기 처리를 통해 시스템의..

카테고리 없음 2025.09.05

[충남대학교 - NHN아카데미] Java Backend 개발자 과정 교육생 모집(~6/18)

[충남대학교-NHN아카데미] Java Backend 개발자과정 교육생 모집​1. 모집기간: 2025. 5. 12(월) ~ 6. 18(수)2. 교육기간: 2025. 7. 1(화) ~ 2025. 12. 5(금)3. 교육방법: 오프라인 교육(주 5일, 1일 8시간) 및 실무프로젝트 진행4. 모집절차: 교육과정 신청 후, 코딩테스트 실시 후 최종 합격5. 교육혜택 - 교육비 전액 무료, 지원금 지급(월 30만원, 4개월 지급) - NHN현직자 특강 - 우수 연수생 NHN계열사 및 파트너사 채용 연계 - 우수교육생(상위10%)선정 시, 타 사업 가산점 부여 및 코딩테스트 면제6. 신청 URL - 교육과정 지원: https://www.nhnacademy.com/apply?camp..

카테고리 없음 2025.05.14

[ Spring ] HttpMessageConverter 파헤치기 - 개발 지식

✨사용자로부터 서버는 값을 어떻게 받을 수 있을까?서버는 사용자한테 값을 어떻게 넘길 수 있을까?만약 서버는 LocalDate 클래스로 시간 정보를 받고 싶은데 Client는 LocalDate클래스가 뭔지 모르는데 어떻게 값을 넘겨야 할까? 또는 만약 사용자가 서버에게 User라는 값을 넘기고 싶을 때는 어떻게 해야할까? Spring에서는 이러한 문제를 HttpMessageConverter를 통해 값을 변환해서 각자가 받기 좋은 데이터를 변환을 해줍니다.사용자가 Json형태로 User정보를 넘기면 Spring이 Converter를 통해 서버에게 User객체로 만들어서 전달해줍니다.오늘은 이러한 Converter에 대해서 알아보도록 하겠습니다! ✨목차01. HttpMessageConverter란? (서버..

Spring 2025.04.18

[ Spring ] HandlerMethodArgumentResolver이란? - 개발 지식

스프링을 사용하다 보면 API에 인자값들을 받는 모습을 쉽게 볼 수 있습니다.예를 들어 @RequestBody를 통해 특정 객체를 받는 모습도 볼 수 있습니다.또는 @PathValuable String memberId와 같이 경로의 값을 받는 모습도 볼 수 있습니다.그런데 이런 과정이 Spring에서 어떻게 일어나고 있을까요?이렇게 Argument에 대해 처리하는 것을 바로 ArgumentResolver라고 합니다.오늘은 바로 이 ArgumentResolver에 대해서 알아보도록 하겠습니다. 목차01. HandlerMethodArgumentResolver이란?01-1. 적용 과정 예시02. 적용 과정 정리03. 실제 적용 예시 (Paging 처리)※ 참고 (기본 세팅 되어 있는 ArgumentResolv..

Spring 2025.04.15

[HTTP API 설계] Spring HTTP API란? - 개발 지식

항상 어디서 많이 들어봤던 HTTP API.하지만 정확히 이해하지는 못했었던 HTTP API.오늘은 HTTP API 설계에 대해서 알아보도록 하겠습니다. 목차01. HTTP API02. REST API 란?03. HTTP API vs REST API 차이점 03-1. HTTP vs REST 03-2. HTTP API vs REST API 04. REST API 디자인 04-1. 디자인 해야할 것들! 04-2. URI 디자인 05. HTTP Method 05-1. HTTP Method의 의미 05-2. 추가적인 HTTP Method의 사용법 [참고] 05-3. URI QUERY 디자인 06. 일반적으로 좋은 A..

Spring 2025.04.14

[IOC] 제어 역전의 모든 것 - Spring 지식

B이전 포스팅에서 스프링 프레임 워크에 대해서 소개해보았습니다.이번 시간에는 스프링 프레임 워크의 주요 특징들에 대해서 알아보도록 하겠습니다.스프링 프레임 워크의 주요 특징은 IOC, 제어 역전 / DI, 의존성 주입 / AOP, 관점 지향 프로그래밍 입니다.오늘은 이 세가지 중 IOC, 제어 역전에 대해 알아보도록 하겠습니다. 01. 스프링에서 IOC의 중요성02. Spring IOC의 필요성03. IOC, 제어 역전이란?04. Spring Container란? (IOC의 행동대장?) 04-1. Spring Container 04-2. Bean Factory 04-3. ApplicationContext05. Spring Bean이란? 05-1. 빈등록 방법 2가지 05-2. 스테레오타입 어노테이션 05..

Spring 2025.04.02

[Spring] 시작, Spring이란? - 개발 지식

🌱 스프링(Spring)이란?자바(Java) 언어 기반의 웹 프레임워크입니다.쉽게 말하면, 자바로 웹 애플리케이션을 쉽게 만들 수 있게 도와주는 틀을 말합니다.스프링은 자바의 큰 특징인 객체 지향 프로그래밍(OOP)의 장점을 잘 살려냈다는 것이 스프링의 장점이자 매력입니다. ❓왜 스프링이 만들어졌을까?과거: EJB의 등장옛날에는 자바로 웹 서비스를 만들 때 EJB(Enterprise Java Beans)라는 기술을 많이 사용했습니다.이 기술은 기능은 좋았지만,너무 복잡하고설정이 어렵고개발 속도도 느렸습니다.변화: "POJO"로 돌아가자!그래서 개발자들 사이에서 "순수한 자바 객체(POJO: Plain Old Java Object)로 돌아가자!"는 움직임이 생겼고이 흐름 속에서 나온 것이 바로 스프링입니..

Spring 2024.10.02