목차
은행 거래명세서 잡의 요구사항 이해하기
배치 처리가 수행하는 전체 기능:
- 제공된 입력 파일을 기반으로 고객 정보를 갱신한다.
- 고객 정보가 담긴 CVS 파일이 제공된다.
- 이 파일을 읽어 데이터베이스의 고객 데이터(이름, 메일 주소, 연락처)를 갱신한다.
- 데이터베이스에 저장되어 있는 모든 고객의 거래 정보를 가져온다.
- 거래 정보는 XML 파일로 제공되며 기존 데이터베이스(거래 테이블)에 추가할 것이다.
- 계좌 테이블의 계좌 잔액을 최신으로 갱신한다.
- 계좌 테이블에는 잔액 필드가 있으며, 가장 최근에 가져온 모든 거래 정보를 사용해서 계산하여 갱신한다.
- 현재 잔액을 알고 싶을 때, 모든 거래를 처음 부터 재계산하지 않아도 된다.
- 지난 한 달 동안의 은행 계좌에 대해 인쇄한다.
- 모든 데이터베이스 갱신이 완료되면 고객 정보, 거래 목록, 계좌의 요약 정보로 이뤄진 인쇄 파일을 추출할 수 있다.
배치 잡 설계하기
잡의 처리 흐름
4개의 스텝을 가지는 잡 하나를 만든다.

고객 데이터 가져오기 (Importing Customer Data)
- 갱신할 고객 정보가 담긴 CSV 파일을 가져온다.
- 3가지 종류의 레코드 유형으로 작성되어 있다.
- ItemProcessor 를 사용하여 데이터 유효성을 검증하고, ItemWriter 를 사용하여 레코드 유형에 따라 적절하게 데이터를 갱신한다.
// 고객 정보 파일 예
2,3,"P.O. Box 554, 6423 Integer Street",,Provo,UT,10886
2,65,"2374 Aliquet, Street", ,Bellevue,WA,83841
3,73,Nullam@fames.net,,1-611-704-0026,1-119-888-1484,4
2,26,985 Malesuada. Avenue,P.O. Box 585,Aurora,IL,73863
2,23,686-1088 Porttitor Avenue,,Stamford,CT,89593
1,36,Zia,,Strong
2,60,313-8010 Commodo St.,,West Jordan,UT,26634
2,17,"P.O. Box 519, 3778 Vel Rd.",,Birmingham,AL,36907
거래 정보 데이터 가져오기 (Import Transactions)
- 스프링 배치에서 제공하는 ItemReader와 ItemWriter를 사용하여 XML에서 읽은 데이터를 데이터베이스에 기록한다.
// 거래 정보 파일의 예
<?xml version="1.0" encoding="UTF-8" ?>
<transactions>
<transaction>
<transactionId>1</transactionId>
<accountId>15</accountId>
<credit>5.62</credit>
<debit>1.95</debit>
<timestamp>2017-07-12 12:05:21</timestamp>
</transaction>
<transaction>
<transactionId>2</transactionId>
<accountId>68</accountId>
<credit>5.27</credit>
<debit>6.26</debit>
<timestamp>2017-07-23 16:28:37</timestamp>
</transaction>
...
</transactions>
현재 잔액 계산하기 (Calculating Current Balance)
- 각 계좌의 거래 내역을 가져와서 현재 잔액을 계산하여 계좌 테이블을 갱신한다.
고객의 월별 거래명세서 생성하기
- 고객의 거래명세서를 포함하는 인쇄 파일을 계좌당 하나씩 생성한다.
- ItemReader를 사용해서 데이터베이스에서 고객 데이터를 읽어온다.
- ItemProcessor에서는 고객의 거래명세서 작성에 필요한 모든 데이터를 추가한다.
- 필요한 모든 데이터가 추가된 아이템을 파일 기반의 ItemWriter에 전달한다.
데이터 모델 이해하기

- Customer: 고객 정보 - 이름, 연락처
- Account: 계좌 정보 - 계좌 번호, 잔액
- CustomerAccount: 고객과 계좌를 연결하는 조인(매핑) 테이블. 고객과 계좌는 다대다 관계를 가질 수 있다.
- Transaction: 계좌에서 발생한 모든 거래 정보
'잡다구리' 카테고리의 다른 글
Redis Cluster 구성 테스트 (0) | 2022.08.12 |
---|---|
redis docker (0) | 2021.08.24 |
날짜와 시간 (0) | 2021.07.31 |
스프링 배치 완벽 가이드 - 6. 잡 실행하기 (0) | 2021.05.09 |
스프링 배치 완벽 가이드 - 5. JobRepository와 메타데이터 (0) | 2021.05.06 |
스프링 배치 완벽 가이드 - 4. 잡과 스텝 이해하기 (0) | 2021.05.02 |
스프링 배치 완벽 가이드 - 2. 스프링 배치 (0) | 2021.05.01 |
7장 마이크로서비스 쿼리 구현 (Implementing queries in a microservice architecture) (0) | 2021.04.25 |
댓글