배움 __IL/addtionalBackEnd 2

스프링과 싱글톤: 효율성과 안정성의 조화

I. 들어가며스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.  스프링 기본기를 공부하던 중 다음 문장을 보고 왜 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록하는지 의문이 있었다. 스프링과 싱글톤의 관계를 탐색하고, 웹 어플리케이션 관점에서 특히 싱글톤이 왜 필요한지 그리고 싱글톤 패턴 그 자체와 주의사항에 대해서 알아보겠다. 아울러 시작 전 질문을 한다. 웹 애플리케이션은 수많은 요청을 처리하기 위해 다수의 객체를 필요로 한다. 하지만 매 요청마다 객체를 새로이 생성한다면 어떤 문제가 발생..

N+1 문제와 Fetch 전략을 모르면 JPA를 잘못 쓰고 있을수도...

I. 들어가며JPA 를 이용하기 위해서는 기존에 사용하는 mybatis 이용보다 이점이 필요하다. JPA는 객체 중심 설계와 데이터베이스의 매핑을 손쉽게 처리하는 기능을 제공한다. 하지만 잘못된 설정이나 사용으로 예상치 못한 문제가 발생할 가능성이 상존한다. 이러한 문제를 사전에 이해하고 대비하기 위해 준비하게 되었다.JPA에서 중요한 성능 최적화 이슈인 Fetch전략과 N + 1 문제를 중심으로 살펴보고 이를 해결하는 방법을 살펴보겠다II. 성능 저하를 일으키는 3대 문제와 최적화 방법1. Fetch 전략1) Fetch 전략이란Entity의 연관 데이터를 Eager Loading할지, Lazy Loading할지 결정하는 방식이다.Eager Loading 은 항상 즉시 load해서 연관 데이터가 항상 필..