[QueryDSL] 동적 쿼리를 적용해 다중 조건 조회하는 과정 기록
·
Database/JPA
요구사항검색 조건은 [제목, 날짜 기간, 매니저] 이렇게 3가지였고, 날짜 기간은 startedAt과 endedAt으로 구분했다.\1. 제목이 조건으로 들어오면 제목에 '포함되는' 글을 조회한다.2. 날짜가 조건으로 들어오면 '작성된 글'이 해당 기간 안에 있는 글을 조회한다.3. 매니저가 조건으로 들어오면 '글을 관리하는 매니저가 포함된 글'을 조회한다.  구현: 조건 별로 method를 모두 구현Controller @GetMapping("/search/todos") public ResponseEntity> searchTodo(@RequestParam(defaultValue = "1") int page, ..
[SpringBoot/JPA] 조회 성능 개선하기 - FULLTEXT Index 사용
·
Database/JPA
부트캠프 과제 구현 중 기록100만 건의 데이터를 생성해 저장하고, 목록을 조회 하기목록 조회 시 성능을 개선하기 위한 방법 기록대용량 데이터 생성 후 저장: https://rvrlo.tistory.com/entry/SpringBootJPA-JDBC-Batch-Insert를-통해-대용량-데이터-저장하기      🔎 과제 분석저번 글에서 대용량 데이터를 생성하여 테이블에 저장했으니, 이번에는 조회 성능을 개선해보기로 한다.조회 속도를 개선하기 위해 여러 방법을 고려해보라고 했고, 제일 먼저 떠오른 것은 인덱스를 이용하는 것이었다.   ✨ MySQL - Searchall, index: 테이블 전체 스캔(인덱스x)range: 인덱스를 사용한 범위 검색fulltext: MATCH .. AGAINST 구문을 사..
[SpringBoot/JPA] JDBC Batch Insert를 통해 대용량 데이터 저장하기
·
Database/JPA
부트캠프 과제 구현 중 기록100만 건의 데이터를 생성해 저장하고, 목록을 조회 하기대용량 데이터를 저장하기 위한 방법 기록데이터 조회 성능 개선: https://rvrlo.tistory.com/entry/SpringBootJPA-조회-성능-개선하기-FULLTEXT-Index-사용      🔎 과제 분석100만 건의 데이터를 저장하기 위해 랜덤한 값을 생성해야 했다.먼저 목표인 users 테이블은 pk인 id와 unique로 지정된 email이 존재한다.id는 auto_increment로 지정되어 상관없지만, 공통된 값이 나오면 곤란할 email을 랜덤하게 생성해야 했다. 그리고 과제에 주어진 조건은 → 닉네임은 랜덤으로 지정하고, 동일한 닉네임이 들어가지 않도록 하는 것  결국 email과 nickn..
[JPA] persist(), flush() 그리고 commit() 어떻게 DB에 반영될까?
·
Database/JPA
영속성[명사] 영원히 계속되는 성질이나 능력.- 국립국어원 표준국어대사전  영속성 컨텍스트 Persistence ContextEntity 객체를 영속성 상태로 관리하는 공간.자바에서 작성된 Obejct를 DB Table에 저장하기 위해 사용한다.  JPA를 공부할 때 만나는 '영속'이라는 말이 있다.영속 상태로 둔다, 영속을 시킨다, 영속성 컨텍스트에 저장한다 … 등등 '영속성'이라는 말은 영원히 계속되는 성질이나 능력이라는 의미를 가지고 있다.말 그대로 DB와 동기화하여 오래 지속 되도록 하는 것이다.   ✔️EntityManagerEntityManager를 통해서 Persistence Context에 접근할 수 있다.EntityManager를 사용하는 방법에 대한 설명 글이 아니니 사용하는 방법은 다..