전체 글
-
[Spring Batch] ItemReader(2) - JPAJava/Spring Batch 2021. 5. 30. 20:24
JPA 또는 자바 퍼시스턴스 API는 ORM 영역에서 표준화된 접근법을 제공한다. JPA는 아이템을 조회하는 데 커서 기반 방법은 제공하지 않는다. 스프링 부트가 제공하는 대부분의 기능을 사용할 때 그러하듯, 실제로 스프링 부트를 사용해서 JPA를 구성하는 것은 매우 쉽다. JPA를 사용하는 예제에서 신경 써야 할 부분은 개발하는 ItemReader를 구성하는 것이다. 앞서 언급했듯 JPA는 커서 기법의 데이터베이스 접근을 지원하지 않지만 페이징 기법의 데이터베이스 접근은 지원한다. ItemReader로는 org.springframework.batch.item.database.JpaPagingItemRader를 사용하는데, 해당 리더에는 네 개의 의존성이 필요하다. 필요한 의존성은 ExecutionCo..
-
[Spring Batch] ItemReader(1) - JDBCJava/Spring Batch 2021. 5. 30. 12:46
스프링 배치는 개발자가 별도로 코드를 작성하지 않아도 거의 모든 유형의 입력 데이터를 처리 할 수 있는 표준 방법을 제공하며, 웹 서비스로 데이터를 읽어드리는 것처럼 스프링 배치가 지원하지 않는 포맷의 데이터를 처리 할 수 있는 커스텀 리더를 개발하는 기능도 제공한다. 파일입력 플랫파일 XML JSON 데이터베이스 입력 JDBC 하이버네이트 JPA 저장 프로시저 (Stored Procedure) 스프링 데이터 JDBC 배치 처리를 할 때 대용량 데이터를 처리하는 요구 사항은 흔히 있는 일이다. 레코드 수백만 건을 반환하는 쿼리가 있다면 아마도 전체 데이터를 한 번에 메모리에 적재하고 싶지는 않을 것이다. 하지만 스프링이 제공하는 JdbcTemplate을 사용하고 싶지 않은 일이 벌어진다. JdbcTemp..
-
(컴퓨터공학) 데이터베이스는 B트리를 활용한 시스템이다.컴퓨터 기초/컴퓨터공학 2021. 5. 26. 09:09
데이터베이스는 정해진 방식으로 조직화된 데이터 모음이다. 데이터베이스 관리 시스템(DBMS)은 데이터베이스에 정보를 저장하고 읽어올 수 있게 해주는 프로그램이다. DBMS는 보통 맨 아래의 데이터 저장 매커니즘을 감싼 여러 계층의 인터페이스로 구성된다. 데이터베이스는 독일 컴퓨터과학자 루돌프 바이어(Rudolf Bayer)와 미국 컴퓨터과학자 에드 맥크레이트(Ed McCreight)가 보잉(Boeing)사에서 1971년 개발한 B트리라는 데이터 구조를 활용한 시스템이다. B트리는 균형 트리이지만 2진 트리는 아니다. B트리는 균형 2진 트리보다는 공간을 덜 효율적으로 사용하지만 성능이 더 낫고, 특히 디스크에 데이터를 저장할 때 균형 2진 트리보다 더 성능이 좋다. B트리는 메모리 아키텍처에 대한 이해가..
-
[Spring Batch] StepJava/Spring Batch 2021. 5. 15. 22:54
Step 잡이 전체적인 처리를 정의한다면, 스텝은 잡의 구성 요소를 담당한다. 스텝은 독립적이고 순차적으로 배치 처리를 수행한다. 그렇기 때문에 이 책에서는 스텝을 배치 프로세서라고 부른다. 스텝은 모든 단위의 조각이다. 자체적으로 입력을 처리하고, 자체적인 처리기를 가질 수 있으며, 자체적으로 출력을 처리한다. 트랜잭션은 스텝 내에서 이뤄진다. 스텝은 서로 독립되도록 의도적으로 설계됐다. 이렇게 함으로써 개발자는 필요에 따라 자유롭게 잡을 구조화할 수 있다. 테스크릿 처리 vs 청크처리 테스크릿 모델 Tasklet인터페이스를 사용해 개발자는 Tasklet.execute 메서드가 RepeatStatus.FINISHED 를 반환할 때까지 트랜잭션 범위 내에서 반복적으로 실행된느 코드 블록을 만들 수 있다...
-
[Spring Batch] Job, ExecutionContext카테고리 없음 2021. 5. 15. 22:29
Job 애플리케이션이 사용자에게 비즈니스 가치를 제공할 때 어떠한 논리 흐름이 필요하다. 예를 들어, 어떤 웹 애플리케이션은 사용자가 장바구니에 품목을 추가하고, 배송 주소를 입력하며, 지불 정보를 선택한 후에, 최종적으로 주문 내역을 확인 하는 것과 같은 장바구니 흐름을 가지고 있다. 잡은 이러한 흐름과 유사하다. 이 책(스프링 배치 완벽 가이드)에서는 잡을 처음부터 끝까지 독립적으로 실행할 수 있는 고유하며 순서가 지정된 여러 스텝의 목록이라고 정의한다. 유일하다 스프링 배치의 잡은 코어 스프링 프레임워크를 사용한 빈 구성 방식과 동일하게 자바나 XML을 사용해 구성하며, 구성한 내용을 재사용 할 수 있다. 동일한 구성으로 필요한 만큼 잡을 실행할 수 있다. 잡을 여러 번 실행하려고 동일한 잡을 여러..
-
[Spring Batch] 스프링 배치란 / 이용하면 좋은 이유Java/Spring Batch 2021. 5. 10. 22:17
배치? 일괄적으로 많은 데이터를 처리하는 것 예시 은행에서 생성되는 거래명세서와 퇴직연금명세서 단골 쇼핑몰에서 보내는 쿠폰이 포함된 메일 배치처리를 이용하면 좋은 이유 실제 처리가 시작되기 전에 필요한 정보를 미리 수집할 수 있다. 거래가 이뤄질 때마다 바로 월별 거래명세서를 인쇄해내는 것이 합리적일까? 월말까지 기다려서 한 번에 거래 내역을 조사하는 것이 더 합리적이다. 사업적으로 도움이 된다. 대부분의 사람들은 구매 버튼을 클릭하자마자 온라인으로 구입하려는 상품이 배송 트럭에 실렸으면 한다. 그렇지만 이는 소매업자에게 최선이 아닐 수도 있다. (내생각에는 고객에게 더 도움이 될 것 같다. 환불 비용은 고객이 부담해야 할테니..) 고객이 마음을 바꿔 주문을 취소할 때, 아직 배송하기 전이라면 훨씬 더 ..
-
(QueryDSL) 현재 날짜와 비교(between)DB/JPA 2021. 3. 3. 13:23
(이전에 작성했던 글은 진짜 메모장이었어서 다시 정리해봅니다.) DB에 시작일과 종료일이 있고, 현재날짜와 비교해서 아직 유효한 권한만 가져오고 싶은 경우가 있다고 가정하자. 1. JPARepository 활용시 service 단에서 현재 날짜를 보낸 뒤, repository에서 활용하는 방법 Service.java @Service @RequiredArgsConstructor public class Service{ private final AuthRepository repository; public List getAuthListByDate(){ return repository.findByStartDateLessThanEqualAndEndDateGreaterThanEqual(new Date(), new D..
-
[IntelliJ] Unable to import Maven project , UnsupportedClassVersionErrorJava/Trouble Shooting 2021. 2. 23. 16:35
IntelliJ에서 프로젝트를 import 했을 때 아래와 같은 에러가 나면서 실패 될 때, ERROR - aemon.impl.PassExecutorService - org/apache/maven/artifact/handler/ArtifactHandler : Unsupported major.minor version 51.0 java.lang.UnsupportedClassVersionError: org/apache/maven/artifact/handler/ArtifactHandler : Unsupported major.minor version 51.0 jdk 버전을 확인하고, 설정해 주어야 함 version 51.0 ㅡ> 컴파일 버전 1.7 version 50.0 ㅡ> 컴파일 버전 1.6 version 4..