Spring JDBC Bulk Insert 알아보기
·
Back-end/Spring
들어가기 프로젝트 진행 중 20만 건 이상의 데이터 Row를 데이터베이스에 Insert해야 했다. JPA saveAll() 방식을 사용했을 때 저장 속도가 느려서 성능 향상이 필요하다고 느꼈고 JDBC Bulk Insert로 저장 속도를 향상시킬 수 있었다. JPA saveAll() 아래의 코드는 JPA saveAll() 코드로, while 문 안의 두 번째 라인에서 엔티티를 하나씩 save하도록 구현되어 있다. @Transactionalpublic List saveAll(Iterable entities) { Assert.notNull(entities, "Entities must not be null"); List result = new ArrayList(); Iterator var4 ..
@RequestBody, @ResponseBody에 대해서
·
Back-end/Spring
들어가기 Spring에서 비동기 통신을 위해 주로 Controller에서 사용하는 어노테이션 @RequestBody, @ResponseBody에 대해서 알아보자. @RequestBody클라이언트가 서버로 보내는 JSON 형식의 HTTP Body를 자바 객체로 변환하는 역할을 한다.@Getter@NoArgsConstructor@AllArgsConstructorpublic class AddArticleRequest { private String title; private String content;}@RestController@RequiredArgsConstructorpublic class BlogApiController { private final BlogService blogService..
HTTP Status Code, ResponseEntity에 대해서
·
Back-end/Spring
들어가기 HTTP 응답을 제어할 수 있는 ResponseEntity 객체에 대해서 알아보자. ResponseEntity ResponseEntity는 HttpEntity를 상속하여 구현되어 있다. HttpEntity의 구현 필드를 살펴보자.public class HttpEntity { public static final HttpEntity EMPTY = new HttpEntity(); private final HttpHeaders headers; @Nullable private final T body; ...}  HttpEntity는 HttpHeader를 설정할 수 있는 필드와, 제네릭 타입으로 Body 필드를 가지고 있다. 다음으로 이를 상속하는 ResponseE..
@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor에 대해서
·
Back-end/Spring
들어가기 Lombok 라이브러리의 어노테이션 @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor에 대해서 알아보자. @NoArgsConstructor @NoArgsConstructor는 파라미터가 없는 디폴트 생성자를 자동으로 만들어주는 어노테이션이다.@NoArgsConstructorpublic class Dog { private String name; private int age; // Omitted Getter & Setter}public class Dog { private String name; private int age; // Omitted Getter & Setter public D..