Spring
-
Delete 배치 처리 (feat. deleteAllInbatch() vs batchUpdate() + rewriteBatchedStatements=true vs in 절)Spring 2025. 4. 8. 20:58
이전에 bulk insert에 대해서 찾아보았다. ↓https://dodop-blog.tistory.com/498 Spring JPA의 save() vs saveAll() vs bulk insert() (feat. db client)이번에 면허 재검증 프로세스를 구성하면서 면허 검증 로깅에 관한 작업을 구성하게 되었다. 면허 검증에는 배치로 검증하는 과정이 있기 떄문에, 로깅도 한번에 저장되어 DB 팀에게 어느정도dodop-blog.tistory.com 그렇다면 다량의 데이터를 delete 처리할 때는 어떨까? 1. jpa의 delete() 메서드 활용 가장 먼저 for문을 이용해서 delete()메서드를 연속호출하여 인서트를 수행해보자. @Test fun delete() { ..
-
Spring JPA의 save() vs saveAll() vs bulk insert() (feat. db client)Spring 2025. 4. 8. 01:37
이번에 면허 재검증 프로세스를 구성하면서 면허 검증 로깅에 관한 작업을 구성하게 되었다. 면허 검증에는 배치로 검증하는 과정이 있기 떄문에, 로깅도 한번에 저장되어 DB 팀에게 어느정도의 데이터를 한번에 저장할 수 있는지 문의드렸다. 단건 수행이 아닌 bulk insert로 하는 경우 더 많은 양의 데이터를 저장할 수 있다는 답변을 받고 해당 내용을 구현하였다. 작업 환경에서는 id의 채번 규칙을 auth_increment 전략을 사용하고 있었다. JPA auth_increment ID 채번 방식 id의 채번 규칙을 auth_increment 전략을 사용하면 bulk insert가 가능할까? 해당 전략을 사용하게 되면, JPA규칙에 의해서 bulk insert는 사용할 수 없게 된다. auto_i..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 3) CD 구현하기 ② (Sonarqube 설치 및 연동)Spring 2022. 9. 17. 09:14
이번엔 프로젝트를 배포할 때, Jenkins와 Sonarqube를 연동하여 코드에 문제가 없는지 확인한 후 배포가 진행되도록 할 것이다. Sonarqube 설치 배경 설정 먼저 sonarqube를 사용하기 위한 설정을 위해 다음과 같이 root사용자로 변환해준다. 기존 ubuntu 사용자로 진행시 permit denied가 된다. 자세한 내용은 다음에서 확인이 가능하다. https://docs.sonarqube.org/7.9/requirements/requirements/ Prerequisites and Overview | SonarQube Docs The only prerequisite for running SonarQube is to have Java (Oracle JRE 11 or OpenJDK 1..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 2) CD 구현하기 ① (Jenkins 배포)Spring 2022. 9. 17. 09:14
지난 시간에 CI를 구현하였다면 이번엔 코드 배포도 자동으로 이루어지도록 구현해보자. 배포 배경 설정 먼저 프로젝트 배포 배경설정을 위해서 JDK, Maven을 설정해줄 것이다. 터미널에서 maven을 설치하고 설치된 jdk와 maven 경로를 확인할 수 있도록 설정해주자. ## java 확인 $ which javac $ readlink -f /usr/bin/javac ## JAVA_HOME 경로 설정 $ vim ~/.bashrc export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) export PATH=$PATH:$JAVA_HOME/bin ## 설정파일 실행 $ source ~/.bashrc ## 경로 확인 $ echo $JAVA_HO..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 1) CI 구현하기 (Jenkins 설치 및 실행, Github연동(ssh, webhook))Spring 2022. 9. 17. 09:14
CI/CD는 예전에 미션을 진행하면서 jenkins를 이용한 CI/CD 구현에 대해서 한번 찾아본 적이 있긴 하지만, 구체적으로 정리하면 좋을 것 같아 진행하게 되었다. ( 마침 면접용 spring 프로젝트가 생겼기 때문이기도 하다!😅 ) EC2에 자바 설치 가장 먼저 프로젝트를 배포할 ec2를 만들어 준다. 나의 경우 ubuntu 22.04 버전을 사용하고 퍼블릭 ip를 이용하여 접속이 가능하도록 설정해주었다. (ec2생성 파트는 지난 배포 블로그 글에서 자세히 다루었다) 먼저 ubuntu ec2에 접속하여 자바를 설치해준다. $ sudo apt update $ sudo apt install default-jre $ sudo apt install default-jdk ## 설치된 자바 버전 확인 $ j..
-
예외처리전략 ( ExceptionHandler ) 2Spring 2022. 1. 13. 18:17
https://dodop-blog.tistory.com/229 예외처리전략 (Exception Handler) 스프링에서 예외처리를 해주자. 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정해준다. Error Response 먼저 예외의 형태를 잡아주는 클래스를 작성해준다. 메세지와 상태, 시간정 dodop-blog.tistory.com 이전 글에서 예외처리 전략을 이용하여 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정하는 방법을 알았다. 그런데 여기서 모든 customException을 RuntimeException을 상속받아 중복되는 NotFoundException의 경우에도 모두 ControllerAdvice(GlobalExceptionHandler)에서 일일이 처리해주어야..
-
RESTful APISpring 2021. 12. 19. 15:41
API는 Application Programming INterface로 컴퓨터 프로그램간 서로 정보 교환이 가능하도록 하는 것으로 REST API는 REST기반으로 서비스 API를 구현한 것이다. RESTful API RESTful API란 REpresentational State Transfer로 자원에 대한 행위 를 HTTP Method(GET, POST, PUT, DELETE)로 표현하고 자원을 URI로 표현하는 REST아키텍쳐를 스타일 을 따르면서 구현된 시스템을 말한다. 이해하기 쉽고 사용하기 쉬운 API를 만드는 것이 목적이다. REST의 속성 REST는 자원 기반 구조(Resource Oriented Architecture)의 4가지 속성을 따른다. Addressability : 제공하는 모..
-
multipart.MaxUploadSizeExceededException 오류 발생시Spring 2021. 11. 6. 11:56
기본으로 설정된 multipart파일의 사이즈보다 넣으려는 파일의 크기가 크기 때문에 발생한다. (디폴트 값은 1048576 bytes = 1MB) application.properties에 값 설정을 변경해줌으로서 해결할 수 있다. SpringBoot 2.x의 버전 spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB SpringBoot 1.4.x & 1.5.x의 버전 spring.http.multipart.maxFileSize=10MB spring.http.multipart.maxRequestSize=10MB SpringBoot 1.3.x혹은 그 이전 버전 multipart.maxFileSize=10..