전체 글 (41) 썸네일형 리스트형 맨땅에 Spring Batch - Job 그리고 Step Spring Batch를 접하면 가장 많이 만나는 녀석들 Job과 Step을 알아보자 우선 Spring Batch Domain을 정리해 보면 JobLauncher JobLauncher는 Job과 JobParameters를 사용하여 Job을 실행하는 객체이다. Job 배치 처리 과정을 하나의 단위로 만들어 표현한 객체 Job 이름 정의 Step의 실행 순서 정의 Job의 재사용 가능성을 정의 JobInstance Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로써 고유하게 식별 가능한 작업 실행 JobPrameters를 이용하여 구분 Job : JobInstance = 1 : * JobExecution JobInstance의 실행 결과 객체 실패했던 JobInstance에 대해 새로운 실행을 .. 맨땅에 Spring Batch - Meta Table Spring Batch에는 본인이 생성한 적 없는 이상한 Database Table 녀석들을 만날 수있다. Spring Batch Gradle 의존성을 추가하고 새로고침 하면 External Libraries에 spring-batch-core녀석을 만날 수 있다. 하위 디렉토리 org/springframework/batch/core 위치에 보면 많은 종류의 Database를 위한 SQL을 만날 수 있다. Spring Batch가 실행될 때 여기 있는 sql 중에 본인이 설정한 Database유형에 맞는 SQL을 실행하여 Spring Batch를 위한 Table들을 생성하게 되는 것이다. Table들을 생성하는 방법은 두가지가 있는데 1. 수동 생성 - 수동 생성은 말 그대로 본인의 Database에 맞는.. 맨땅에 Spring Batch - 설정 그럼 이제 정말 Spring Batch를 코드에 적용해 보자 우선 언제나 가장 서터레서인 설정이다. 잘 한번 해보자고 본인의 서비스는 gradle 프로젝트이다. gradle 의존성을 추가 해준다. gradle 새로고침 한번 해주시고 Main class에 @EnableBatchProcessing 어노테이션을 추가해 준다. 설정 끗 맨땅에 Spring Batch 허참 Spring Batch란 녀석을 만났다. 우선 Batch 배치란 일괄 작업을 뜻한다. 그럼 우리가 흔히 사용하는 서비스 안에서 일괄 작업은 어떤 것들이 있는가 예를 들면 월별 회원 정산, 일별 주문량 정산 등이 있을 수 있겠다. 우리는 보통 이러한 일괄 작업들을 Spring Scheduler를 이용하여 지정된 주기별로 자동으로 작업 되도록 한다. 본인이 몸을 담고있는 서비스에서도 물론 그런 방식으로 처리되고 있었다. 하지만 이렇게 서비스 내에서 Scheduler를 이용하여 일괄 작업을 처리하면 우선적으로 메모리에 문제가 생길 수 있다. 우리가 처리하는 일괄 작업들은 대개 대용량 데이터를 다루는 경우가 많다. 이렇게 대용량 데이터를 처리하는 작업은 당연히 많은 양의 메모리를 차지하게 된다. 대용량 데.. 맨땅에 JPA - QueryDSL Database 조작2 자 이제 이어서 앞서 얘기한 QueryDSL을 위한 Interface 및 구현 클래스를 만들어보자. 이전 포스트를 못 본 사람이라면 https://thecardeveloper.tistory.com/30 맨땅에 JPA - QueryDSL Database 조작1 이번 포스트에선 앞선 두 포스트로 만들어진 QClass를 사용하여 Database를 조작을 준비해 보겠다. (여기서 조작은 쉽게 CRUD를 얘기한다.) 우선 Entity와 QClass까지 생성이 됐다면 이번엔 Repository를 생 thecardeveloper.tistory.com 앞서 그린 그림을 보면 우리가 지금 해야할 작업은 CommonCodeQueryRepository라는 Interface를 생성해야한다. (애초에 Entity 이름을 좀 짧.. 맨땅에 JPA - QueryDSL Database 조작1 이번 포스트에선 앞선 두 포스트로 만들어진 QClass를 사용하여 Database를 조작을 준비해 보겠다. (여기서 조작은 쉽게 CRUD를 얘기한다.) 우선 Entity와 QClass까지 생성이 됐다면 이번엔 Repository를 생성해야 한다. *JPA Repository란 Spring Data JPA에서 제공하는 JPA 구현을 위한 인터페이스이다. 우리는 이 인터페이스를 상속하여 이미 정의된 메소드를 사용해 Database를 조작할 수 있다. 본인의 프로젝트에 적당한 경로에 Interface를 하나 생성 해주자 이렇게 만들어진 Interface에 2가지 작업을 해주자 1. @Repository 어노테이션 추가 2. extends JpaRepository로 JpaRepository 상속 여기서 JpaR.. 맨땅에 JPA - Entity와 QClass 이전 포스트에선 JPA 기본 설정들을 알아보았다. https://thecardeveloper.tistory.com/28 맨땅에 JPA - 설정 이번 포스트부터 JPA를 한 번 다뤄보려 한다. 본인도 아직 강의를 듣거나 학습을 우선적으로 진행한 것이 아니라 실제 개발을 하면서 그냥 한 번 부딪혀 본 것이기 때문에 정확한 정보 전달보다 thecardeveloper.tistory.com 이번에는 설정 이후 사용해야 하는 QClass와 Entity를 알아보겠다. 먼저 QClass를 생성하려면 Entity 객체가 존재해야 한다. Entity에 대해 알아보자. Entity란 쉽게 생각하면 Database 테이블에 대응하는 하나의 클래스이다. 코드로 살펴보면 위와 같이 CommonCodeGroup이라는 Entity .. 맨땅에 JPA - 설정 이번 포스트부터 JPA를 한 번 다뤄보려 한다. 본인도 아직 강의를 듣거나 학습을 우선적으로 진행한 것이 아니라 실제 개발을 하면서 그냥 한 번 부딪혀 본 것이기 때문에 정확한 정보 전달보다는 개인적인 일지로 기록해보려 한다. 우선적으로 JPA를 본인 프로젝트에 적용하기 위한 설정을 알아보자. 본인의 기본적인 개발 환경은 - Spring boot - IntelliJ - Java - Mssql - gradle 이렇게 되어있다. 원래는 Mybatis를 사용했으나 JPA로 변경해 보려 한다. JPA를 사용하면 거의 당연스럽게 따라오는 것이 QueryDSL인 것 같다. 그래서 설정 방법을 같이 알아보자. 1. build.gradle 파일 implementation "com.querydsl:querydsl-jpa.. 이전 1 2 3 4 5 6 다음