Home
Koji's Blog
Cancel

스프링 배치(Spring Batch) - 2. 스프링 배치 도메인 이해

저번 포스팅에서 스프링 배치를 구성하기 위해 필요한 준비들에 대해 알아보았다. 이번 포스팅에서는 스프링 배치에서 사용하는 주요 도메인들에 대해 알아볼 것이다. Job 배치 계층 주소에서 가장 상위에 있는 개념으로 하나의 배치작업 자체를 의미한다. JobParameter Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 객체이다. ...

스프링 배치(Spring Batch) - 1. 스프링 배치 시작

최근 업무 중 스프링 배치를 사용할 일이 있어 빠르게 사용법을 익히고 적용하게 되었다. 기존에 인프런에서 강의를 사놓은 게 있어 참고하긴 했지만 너무 빠르게 익힌 감이 있어 글로 정리해 보려 한다. 배치 애플리케이션이란? 배치(Batch)란 일괄처리 란 뜻을 가지고 있다. 만약 매일 전 날 데이터를 집계 해야한다고 가정해 보자. 이 집계 과정을 기...

예제로 알아보는 제어의 역전 - IoC(Inversion of Control)

스프링 프레임워크에 대해 공부하다 보면 IoC, 제어의 역전이라는 키워드가 자주 등장한다. 스프링을 사용하는 개발자라면 숨쉬듯이 사용하고 있을 이 개념을 예제를 통해 다시 한번 정리해 보려고 한다. IoC란? 프로그램의 제어 권한을 자신이 아닌 다른 대상에게 위임하는 방식 추상적인 개념이기에 한 문장으로 표현하기가 어렵다. 따라서 폭넓게 ...

스프링 MVC

저번 포스팅에서 서블릿 컨테이너, 스프링 컨테이너의 생성 과정을 알아 보았다. 이번 포스팅에서는 MVC 아키텍쳐에서 각 컨테이너들의 생성 이후 사용자의 요청을 처리하는 과정을 알아 본다. MVC 아키텍쳐란? 프레젠테이션 계층의 구성요소를 정보를 담은 모델(M), 화면 출력 로직을 담은 뷰(V), 제어 로직을 담은 컨트롤러(C) 로 분리하고 이...

스프링 컨테이너와 서블릿 컨테이너

웹 개발자라면 스프링 컨테이너와 서블릿 컨테이너에 대해 어느 정도는 알고 있을 것이다. 나도 딱 어느정도만 알고 있고, 실무에서 직접적으로 다루지는 않다 보니 공부를 해도 금세 휘발되어 버린다. 웹개발자라면 컨테이너, 스프링 컨테이너, 서블릿 컨테이너에 대해 언제나 설명할 수 있어야 한다고 생각하기에 정리해본다. 서블릿이란? 서블릿(Servl...

자바 쓰레드 로컬(ThreadLocal)

ThreadLocal? ThreadLocal은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 쉽게 이야기해서 물건 보관 창구를 떠올리면 된다. 여러 사람이 같은 물건 보관 창구를 사용하더라도 창구 직원은 사용자를 인식해서 사용자별로 확실하게 물건을 구분해준다. 이해하기 쉽도록 예시를 들어 보겠다. ThreadLocal이 아닌 필드 변수를 ...

자바 JVM(Java Virtual Machine), 가비지 콜렉션(Garbage Collection)

##JVM? JVM은 ‘java virtual machine’을 줄인 것으로 직역하면 자바를 실행하기 위한 가상 머신이라고 할 수 있다 자바로 작성된 어플리케이션은 모두 이 JVM 위에서만 실행되므로, 자바 어플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 Java 어플리케이...

데이터베이스 정규화(Normalization)

정규화 정규화의 기본 목표는 테이블 간의 중복된 데이터를 허용하지 않는것이다. 중복된 데이터를 허용하지 않음으로서 무결성을 유지할 수 있고, DB의 저장 용량 또한 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있는데, 각 단계를 알아보자 제 1정규화 제 1정규화란 컬럼이 Atomic Value를 갖도록 하는 분해하는 것이다 ...

스프링 서비스 추상화(Service Abstraction)

예제로 알아보는 스프링 템플릿(Template), 콜백(Callback)

이전에 작성했던 DB 커넥션 코드들 중 UserDao의 가장 단순한 메서드인 deleteAll()를 살펴보자 public class UserDao{ public void deleteAll() throws SQLException{ Connection c = dataSource.getConnection(); PreparedSt...