전체 글
  • 기존 구현체 사용 스프링 배치는 동일한 JobParameters 로는 성공한 Job의 재실행이 불가능하다고 했다. 하지만 Job을 여러번 수행시켜야하는 경우도 있으므로 해당 경우에 incrementer()을 사용한다. 기존 구현체인 RunIdIncrementer() 을 사용할 경우 run.id 를 key 값으로 value 가 1씩 증가하여 Job이 실행된다. 계속적으로 증가되는 파라미터가 존재하므로 다른 파라미터 값들은 동일하도 JobParameters 가 다르게 인식되어 재실행이 가능해진다. IncrementerConfiguration.java package com.spring.batch.job; import com.spring.batch.job.incrementer.CustomJobParameters..

    Read more
  • 조인 전략 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본키를 받아서 기본키 + 외래키로 사용하는 전략이다. 예시 Item.java (부모 테이블) package com.book.jpa.chapter07.JoinedStrategy.joined; import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.JOINED) // 상속 매핑은 부모 클래스에 해당 어노테이션을 써야한다. 매핑전략 지정 @DiscriminatorColumn(name = "DTYPE") // 부모 클래스에 구분 컬럼을 지정한다. 이 컬럼으로 저장된 자식 테이블을 구분한다. public abstract class Item { @Id @Gen..

    Read more
  • 문제 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이코드 package seohae.thiscodingtest.part03.Q03_StringReverse; import java.util.Scanner; /** * https://www.acmicpc.net/problem/1439 */ /* 0, 1로 만 이루어진 문자열 S 문자열 S의 모든 숫자를 같게만들자. S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는것이다. 뒤집는 것은 1 ->..

    Read more
  • 이전 버전 Swagger 2.0 적용 방법 https://devfunny.tistory.com/313 SpringBoot에 Swagger을 빠르게 적용해보기 Swagger 요즘 백엔드 개발은 ModelAndView 방식보다는 API 위주의 어플리케이션을 권장하고 있다. API 개발이 많아짐에 따라, 프로젝트 안의 API를 관리할 수 있는 문서가 필요해졌다. API 문서를 만들 devfunny.tistory.com Swagger 3.0 적용 1) build.gradle implementation 'io.springfox:springfox-boot-starter:3.0.0' 2) SwaggerConfig.java package com.api.shop.config; import org.springframewo..

    Read more
  • 람다표현식 메서드를 하나의 식(expression)으로 표현한 것이다. 메서드를 람다식으로 표현하면 메서드 이름과 반환값이 존재하지 않기 때문에 이를 '익명함수' 라고도 한다. 람다표현식의 뜻을 글로만 보면 감이 안올 수 있다. 아래 예제로 어떤식으로 람다표현식이 사용되는지 눈으로 확인하자. 람다식 예제 import dto.SampleDto; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Basic { private void test() { List sampleDtoList = new ArrayList(); // 람다식 사용 sampleDtoList.sort( (SampleDto sam..

    Read more
  • JobLauncherApplicationRunner - 스프링 배치 작업을 시작하는 ApplicationRunner 이고 ApplicationRunner의 구현체로, 어플리케이션이 정상적으로 구동되자마자 실행된다. - BatchAutoConfiguration 에서 생성된다. - 기본적으로 빈으로 등록된 모든 job을 실행시킨다. 사용자가 Job Name을 지정하여 실행시키고싶은 Job만 실행시킬 수 없을까? 예제코드 application.yml ... spring: batch: jdbc: # schema-mysql.sql 항상 실행 initialize-schema: always job: enabled: false # spring batch 자동실행 방지 names: ${job.name:NONE} Run/..

    Read more
  • jobLauncher - 배치 Job을 실행시키는 역할을 한다. - jobLauncher.run(job, jobParameter); 로직으로 배치를 수행한다. job, jobParameter 를 인자로 받아서 jobExecution을 결과로 반환한다. - 스프링 배치가 실행되면 jobLauncher 빈을 생성하고, jobLauncherApplicationRunner가 자동적으로 jobLauncher을 실행시킨다. 예제코드 JobLauncherConfiguration.java package com.spring.batch.job; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springf..

    Read more
  • StepContribution - chunk 프로세스의 변경 사항을 버퍼링한 후 StepExecution 의 상태를 업데이트하는 도메인 객체다. - BATCH_STEP_EXECUTION 테이블을 한번 확인하고 오자. https://devfunny.tistory.com/477?category=820618 스프링배치가 제공하는 배치 메타데이터 저장 테이블 (BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION, BATCH_JOB_EXEC JobRepository 스프링 배치가 제공하는 여러 데이터베이스 테이블을 사용하여 배치 메타데이터를 저장한다. 총 6개의 테이블이 존재하는데, 각 테이블 정보에 대해 알아보자. BATCH_JOB_INSTANCE 테이블 devfunny.tistory.com..

    Read more
  • 문제 에너지를 효율적으로 사용하고자 화성 탐사 기계가 출발 지점에서 목표 지점까지 이동할때 항상 최적의 경로를 찾아야한다. N x N 크기의 2차원 배열에 각각의 칸을 지나기 위한 비용이 존재한다. 가장 왼쪽칸 [0][0] 에서 가장 오른쪽 아래칸 [N - 1][N - 1] 위치로 이동하는 최소비용을 출력하라. 화성탐사 기계는 특정한 위치에서 상하좌우 인접한 곳으로 1칸씩 이동할 수 있다. 풀이코드 package seohae.thiscodingtest.part03.Q39_MarsExploration; import java.util.*; /* - 구현 후 로직 디버깅 (distance) 5 5 4 3 9 1 3 2 7 의 경우 (1) [1000000000, 1000000000, 1000000000], [1..

    Read more
  • 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 풀이코드 import java.util.ArrayList; import java.util.List; /* 문자열 압축 : 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현 (예시) aabbaccc -> 2a2ba3c 앞의 a 개수 : 2 b 개수 : 2 a 개수 (1이므로 a) c ..

    Read more
  • 상황 Member, Category, Member_Category 총 3개의 테이블이 있다. 위 테이블을 보면 아래 컬럼 3개가 중복된다. 1) reg_dts 2) mod_dts 3) is_deleted JPA 클래스 상속으로 중복 컬럼 처리 BaseEntity.java package com.api.plan.entity.base; import javax.persistence.MappedSuperclass; @MappedSuperclass public abstract class BaseEntity { private String regDts; private String modDts; private String isDeleted; } Member.java package com.api.plan.entity; i..

    Read more
  • SpringBoot Project 1. build.gradle runtimeOnly 'org.postgresql:postgresql' 2. application.yml spring: # Postgres Database datasource: url: jdbc:postgresql://localhost:5432/devplan username: plan password: plan driver-class-name: org.postgresql.Driver # JPA jpa: hibernate: ddl-auto: create # 자동으로 테이블 생성 (drop -> create) properties: hibernate: format_sql: true Mac 터미널로 Postgresql 설치 1) 터미널에서 postg..

    Read more
  • 들어가기전 지난 포스팅에서 JobExecution에 대해 알아보았다. 이를 먼저 인지한 후 StepExecution에 대해 알아보자. https://devfunny.tistory.com/680?category=820618 SpringBatch 에서 JobInstance, JobExecution 의 관계 들어가기전 JobInstance, JobExecution 의 개념은 알고가자. https://devfunny.tistory.com/476?category=820618 [스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) 잡의 실행 잡.. devfunny.tistory.com 예제코드 StepExecutionConfiguration.ja..

    Read more
  • 가비지 컬렉션 (Garbage Collection) 유효하지 않은 메모리(Garbage)를 자동으로 제거해주는 작업이다. Java Appliation은 JVM(Java Virtual Machine)위에서 구동되는데, JVM의 기능 중 더이상 사용하지 않는 객체를 청소하여 메모리 공간을 확보하는 작업이다. GC가 필요한 이유는? Heap 영역에 저장되는 객체들이 계속해서 쌓이게되면 OutOfMemoryException이 발생하여, 이를 방지하기 위해 주기적으로 사용하지 않는 객체를 수집하여 제거해줘야한다. 예제 Test test = new Test(); test.setId(1L); test.setName("seohae"); testRepository.save(test); test = null; // 더이상..

    Read more
  • 들어가기전 JobInstance, JobExecution 의 개념은 알고가자. https://devfunny.tistory.com/476?category=820618 [스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) 잡의 실행 잡의 실행은 잡 러너 (Job Runner) 에서 시작된다. 잡 러너는 잡 이름과 여러 파라미터를 받아, 잡을 실행시킨다. 스프링 배치는 2가지 잡 러너를 제공한다. 1) CommandLineJobRunner 스크립트를 devfunny.tistory.com 예제코드 JobExecutionConfiguration package com.spring.batch.job; import lombok.RequiredAr..

    Read more
  • Copyright 2024. GRAVITY all rights reserved