The Domain Language of Batch – Spring Batch Chapter 2

배치 개념을 익히기 정말 좋은 챕터가 아닌가 생각됩니다. 스프링 배치의 도메인 언어인지, 일반적인 배치의 도메인 언어인지는 구분하기 힘들지만, 상당히 많이 정제되어 있다는 느낌을 받을 수 있었습니다. 분명, 수 많은 프로젝트의 배치 작업을 하면서 도출해낸 도메인 언어들이 아닐까 생각됩니다.

요즘은 귀찮아서 그림을 안 그렸었는데, 오랜만에 그려봐야겠습니다. 레퍼런스에 나와있는 그림에 표현하지 않은 도메인(JobParameters, ExecutionContext, Persistence 여부)도 있어서요.

사용자 삽입 이미지
후광이 있는 녀석들은 Persistent Domain입니다. 즉 (DB를 사용한다는 가정하에) Step이라는 테이블이 없다고 (즉, Step 정보를 유지하지 않는다고) 봐도 됩니다. 그래서 StepExecution 테이블에는 JobExecution의 주키를 참조하는 외례키 컬럼만 있고 Step_ID와 같은 컬럼은 없습니다.

연한색 박스는 인터페이스, 진한 색은 클래스입니다.

ExcutionContext는 StepExcuion 당 하나씩 생성됩니다.

재미있는 건 저 도메인들을 저장하는 책임을 지닌 JobRepository라는 인터페이스인데, 이 녀석의 구현이 어떻게 되어 있을까 궁금했는데, 구현체는 없었습니다. 어떻게 구현해야 할런지… JDBC 말고 애노테이션 기반 하이버네이트를 써서 구현하는 방법이 궁금해집니다. JobRepositoryHibernate 야.. 뭐 SessionFactory만 있으면 알아서 넣어줄테니 걱정되지 않는데, 저들 도메인의 맵핑 정보를 넘겨줘야 하는데 말이죠. 그걸 어떻게 애노테이션으로 할 방법은 없을까요. 흠… XML로만 해야 할까요. XML 로 해야 한다면, 맵핑 정보는 어떻게 만들면 될까요? 어느정도 고정적인 도메인이니까, 하나 만들어 두는게 좋을 것 같습니다.

흠.. Spring Batch + 하이버네이트를 기반으로 한 어떤 프레임워크가 되겠군요.

자세한 설명은 http://static.springframework.org/spring-batch/spring-batch-docs/reference/html/core.html 를 참조하세요.

4 thoughts on “The Domain Language of Batch – Spring Batch Chapter 2”

  1. 그리고 배치의 도메인 언어는 웹의 MVC만큼은 통일되지는 않은 것 같은데, 대체로 Job,Step, Transformation 같은 용어는 여기저기서 많이 보이더군요(Pentaho Data Integratino이나 Websphere XD computer Grid 같은 솔류션에서도 본듯..) 그런데 영어 단어 뜻을 생각하면 그 정도 용어의 유사성은 당연한 것 같기도 하군요 ^^;

  2. SimpleJobRepository가 JobRepository를 implements 하고 있죠. 여기에 JobInstanceDao, JobExecutionDao, StepExecutionDao가 속성으로 들어가 있고, JobInstanceDao를 구현하는 클래스로는 메모리를 사용하는 MapJobInstanceDao와 JDBC를 사용하는 JdbcJobInstanceDao가 있습니다. Hiberate를 사용하려면 이런 DAO클래스부터 만들어주면 될 것 같네요. JdbcJobInstanceDao같은 것대신 hibernate로 재작성한다면 어떤 장점이 있을지는 생각해봐야 할 것 같네요 ^^;

    Springbatch에서는 HibernateCursorItemReader나
    HibernateAwareItemWriter 클래스로 Hibernate사용자를 위한 연결점을 제공하기는 하는데, JobRepository에서는 별도로 사용자가 코드를 짤 일이 ItemReader나 Writer보다는 적을 것이라고 예측했던 것 같습니다.

    1. 우와.. 기본 구현체가 있었군요;; 보통 스프링 API에는 인터페이스 밑에 그걸 구현한 클래스들 목록도 보여주는데, 아무것도 없길래 기본 구현체가 없는 줄 알았는데 있었네요.

      와.. 감사합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *