@BatchSize
N+1 문제 연관 관계에서 발생하는 문제로 연관 관계를 설정한 엔티티를 조회할 경우에 조회된 데이터 갯수(N) 만큼 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. 당연 N+1로 실행되는 퀴리는 데이터베이스를 엄청나게 많이 사용하기 때문에 문제가 된다. @BatchSize 이 N+1 문제에 대한 가장 간단한...
N+1 문제 연관 관계에서 발생하는 문제로 연관 관계를 설정한 엔티티를 조회할 경우에 조회된 데이터 갯수(N) 만큼 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. 당연 N+1로 실행되는 퀴리는 데이터베이스를 엄청나게 많이 사용하기 때문에 문제가 된다. @BatchSize 이 N+1 문제에 대한 가장 간단한...
NIO (NonBloking Input-Output) 입출력 모듈 중에 프로그램 입출력(In/Out)부터 제어권을 CPU 가 가져와서 작업을 진행하는 것으로 CPU 는 명령어의 수행을 완료할 때까지 기다린다. 따라서 이 기능은 처리 시간이 많이 소모한다. 그래서인지 IO 는 이런 문제점 때문에 파일 입출력이 느리다는 한계점에 부딫히고, 이런 문제점...
기본적인 게시물, 댓글 crud 기능을 제법 혼자 힘으로 구축할 수 있게 되었으니 다음으로는 파일 업로드 처리하는 것을 학습하고자 몇 개를 간단히 건들어도 참 어려운 에러나 이해하기 어려운 개념들이 넘쳐난다. 그래서 오늘 일단 진행한 과정을 복기하고자 한다. multipart Content-Type은 api 연동시에 보내는 자원을 명시하기 위해...
event.target 백엔드 애플리케이션 기능을 테스트하기 위해선 최소한의 HTML, CSS(부트스트랩), 자바스크립트의 지식을 이전 글에도 필요성을 말하였고, 지금까지 최소한의 자바스크립트의 지식을 이해하였고 오늘은 일부 이해하지 못한 것을 작성하고자 한다. 우리는 HTML의 이벤트 발생(클릭, 폼(form),스크롤)를 위해 자바스크립트 함수를...
백엔드 개발자를 목표로 공부를 하고 있지만, 자산이 만든 백엔드 기능이 잘 기능하고 있는지 테스트를 하기 위해서 웹페이지를 만들 때가 있는데 이럴 때 많은 사람들이 사용되는 오픈소스 CSS 라이브러리 부트스트랩(bootStrap)에 대해서 복기하고자 작성한다. bootStrap5 설치 지금 이 글을 작성하는 시점에는 부트스트랩의 최신버전은 5...
JPQLQuery where 어제 querydsl의 where의 몇몇 코드들을 변경하거나 순서를 바꾸는 등 노력한 결과 여태까지 잘못쓰고 있었던 검색 기능을 정상적으로 고쳐놨지만, 이것은 내가 만든 커스텀 QuerydslRepositorySupport를 사용하고 있을 때의 경우이다. 구체적으로는 JPAQuery으로 쿼리를 구성하여 사용하였지만, ...
select from where QueryDsl를 잘 사용하면 별도로 쿼리문을 일일히 입력해서 사용할 필요도 없고, 이러한 작업에서 쿼리문이 길어진다면 자잘한 오탈자만 발생하더라도 에러출력이 “오탈자가 생겨서 오류가 발생하였습니다”라는 단순히 나오는 것이 아니라 장문의 에러코드들이 출력되어 처음에는 오탈자가 원인이라는 것이 파악하지 못할 것이다. ...
Git push가 왜 안될까… 계속 코드 복습을 하겠다고 IDE에서 프로젝트를 새로 생성하고, 나는 중간 과정부터 이 코드를 삽입해서 이 기능이 될까 저 기능을 주입해서 저 기능이 될까 라는 것에 공부하고 싶었는데 처음부터 데이터베이스를 연결해서 만들고 또 스프링 부트에서는 엔티티, dto, 서비스, 리포지토리 등 새롭게 만드는게 괜히 돌아가는 것 ...
영속성 컨텍스트 영속성 컨텍스트(Persistence Context)은 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행한다. 엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 데이터베이스에 반영하는 작업을 수행한다. 이처럼 엔티티 객체가 영속성 컨텍스트에 들어와 JP...
왜 이제 궁금증이 생긴거지… 자바를 이용해서 클래스를 작성할 때 항상 롬복(Lombok)을 사용하여 여러가지 어노테이션들을 추가해서 아래처럼 편리하게 작업을 처리하고 있다. @Entity @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor @ToString public class Boar...