전체 글 (41) 썸네일형 리스트형 [Spring Batch] Batch Performance 성능 향상 (CustomItemReader) 자 드디어 Batch 성능 향상을 위한 CustomItemReader를 만들어보자. 우선 CustomItemReader를 만들려는 이유를 다시 생각해 보면 기존에 사용하던JpaRepositoryItemReader에선 대용량 Data를 Read 할 때 Paging 방식이 Offset을 사용하는 방식이기 때문에 (사용 Database에 따라 다르다) Data 양이 많아질수록 Data를 Read 하는 속도가 많이 늘어나게 된다. 그렇다면 해결 방법은 Offset을 사용하지 않고 대용량 Data를 Read하는 것바로 Table에 ID 값을 이용하여 Read하는 것이다. 바로 코드부터 보자면.(실사용 코드가 아니므로 오타가 있을 수 있음)@Slf4j public class CustomMemberRea.. [Spring Batch] Batch Performance 성능 향상 오늘은 Spring Batch의 약간 심화 과정을 알아보자. 현재 본인은 회사 업무에서 Spring Batch를 개발하여 운영 업무를 담당하고 있다.맨땅에 Spring Batch 시리즈로 공부하여 개발했다. https://thecardeveloper.tistory.com/33 맨땅에 Spring Batch - 설정그럼 이제 정말 Spring Batch를 코드에 적용해 보자 우선 언제나 가장 서터레서인 설정이다. 잘 한번 해보자고 본인의 서비스는 gradle 프로젝트이다. gradle 의존성을 추가 해준다. gradle 새로고침 한번thecardeveloper.tistory.com 우선 만들어 내는 걸 중점으로 후다닥 개발을 하다 보니 개발하면서 놓친 것이 많은 거 같다. 이제는 한 번 되돌아볼 수 있는 .. [Spring] 파일 업로드/다운로드 (다운로드) 이번엔 다운로드 차례이다. 우선 업로드는 링크로 남겨두자. https://thecardeveloper.tistory.com/40 [Spring] 파일 업로드/다운로드 (업로드) 오늘은 웹 개발에서 거의 빼놓을 수 없는 파일 업로드/다운로드에 대해서 알아보자. 이 전에 한 번 다룬 적이 있다. 그땐 Servlet을 이용해서 파일 업로드/다운로드를 다뤘다. 하지만 Spring을 이용 thecardeveloper.tistory.com 위 업로드 포스트에서 객체 및 핵심 로직을 구현했기 때문에 다운로드는 컨트롤러만 작성해주면 되겠다. ItemController.java 1. 업로드한 이미지 파일을 view에서 보기위한 downlaodImage 메서드 생성 2. 업로드한 파일을 내 로컬 PC로 다운로드 하기 위한.. [Spring] 파일 업로드/다운로드 (업로드) 오늘은 웹 개발에서 거의 빼놓을 수 없는 파일 업로드/다운로드에 대해서 알아보자. 이 전에 한 번 다룬 적이 있다. 그땐 Servlet을 이용해서 파일 업로드/다운로드를 다뤘다. 하지만 Spring을 이용하여 개발한다면 훨씬 편하게 파일을 다룰 수 있다. Spring을 이용한 방법으로 알아보자. 이 전에 Servlet을 이용한 파일 업로드/다운로드는 링크로 남겨두자. https://thecardeveloper.tistory.com/7 파일 업로드 / 다운로드 (업로드) 오늘은 웹 프로젝트를 진행하면서 어떠한 프로젝트에도 거의 대부분 사용되는 파일 업로드/ 다운로드 기능을 알아볼까한다. 우선 html 코드이다. 파일을 업로드 할 때 form을 주로 사용하는데 위 thecardeveloper.tistory... Spring Open Feign 녀석을 만났다. 우리는 개발을 하다보면 외부 Api를 호출해야 하는 경우가 종종 있다. 그럴 때 보통 사용하는 기술이 여러가지가 있는데 URL + HttpURLConnection + OutputStreamWriter + BufferedReader RestTemplate + UriComponents + HttpEntity ... 하지만 위와 같은 기술을 사용하면 대표적인 클래스 선언만 3,4가지 이상이 되고 그 이외에 설정까지 하면 외부 Api 호출하는데 기본 코드가 10줄 이상이 돼버린다. 아래는 KAKO 주소 검색 API를 호출하는 코드이다.(OpenFeign 사용 X) KakaoApiService.class @Service @RequiredArgsConstructor public class KakaoApiServic.. 맨땅에 Spring Batch - 회원 복제 Spring Batch를 사용하여 Database Member Table에 데이터 읽어와 이름 앞에 'AI_'를 붙이고 AI Table에 insert 해보겠다. 복제 인간을 만드는 것이다. 구성 JDK 17 Gradle Spring Boot 2.7.12 H2 Database Spring Batch Spring data JPA Lombok application.properties spring.batch.jdbc.initialize-schema = always : Spring Batch의 MetaTable 생성 spring.batch.job.names=${job.name:NONE} : 실행 할 Job Name을 arguments로 전달 기초 데이터 (Member, AI) 이제 할 일은 Member data를.. 맨땅에 Spring Batch - Task 그리고 Chunk Spring Batch에서 Step의 데이터 처리 방식은 Task과 Chunk 두가지가 있다. Task(Tasklet) 직접 구현한 Tasklet 실행 단일 작업 기반으로 처리되는 것이 더 효율적인 경우 사용 Step이 중지될 때까지 execute 메서드가 계속 반복해서 수행하고, 수행할 때마다 독립적인 트랜잭션이 얻어짐 Chunk ChunkOrientedTasklet을 실행 한 번에 하나씩 데이터(row)를 읽어 Chunk라는 덩어리를 만든 뒤, Chunk 단위로 트랜잭션을 다룸 Chunk 기반 Step은 ItemReader, ItemProcessor, ItemWriter라는 3개의 주요 부분으로 구성 ➜ ItemReader와 ItemProcessor에서 데이터는 1건씩 다뤄지고, ItemWriter에.. 맨땅에 Spring Batch - Item Spring Batch에서 Item에 대해 알아보자. 이전 포스트에서 같이 적을까 하다가 이 녀석도 분량이 많아서 따로 적어보자. Item 작업에 사용되는 데이터 (DB를 사용한다면 하나의 row가 하나의 Item) ItemReader : 데이터를 읽어오는 수단 ItemWriter : 데이터를 입력하는 수단 (insert or update 등) ItemProcessor : 비지니스 처리 담당 (ItemReader에서 넘겨준 데이터 개별건을 가공/처리한다.) ItemReader 데이터를 조회 조회 SQL의 결과 Count가 0이면 예외가 아닌 null 반환 Cursor : Database와 Connection을 유지한 상태로 Data를 하나씩 읽음 Paging : 정해진 수 만큼 한 번에 Data를 읽음 .. 이전 1 2 3 4 ··· 6 다음