Intellij) JDBC 프로젝트 (5) 위임된 Main Application

Intellij) JDBC 프로젝트 (5) 위임된 Main Application

Simple JDBC Project (kor)
(1) 
Java, DB 설치 + Docker Compose로 쉽게 해 보기
(2) 프로젝트 생성, Postgresql 컨테이너 게시
(3) Flyway 도입하기
(4) JDBC 연결하기
(5) Main Application 만들기

MainApplication Runner 만들기

자바의 main 함수는 static 함수입니다. 지금 설명하기에는 어려운 이야기지만, 우리는 static 필드 관리를 피할수록 좋습니다. 필드 변수든, 메소드든 static 위주로 사용하는 상황을 피하는 것이죠.

그래서 실행할 애플리케이션 역할을 거의 대신하는 클래스를 만들 것입니다.

  • package: com.example.app
package com.example.app;

public class MainApplicaiton {
    public void run() {
        // 이곳이 이제 main 함수의 역할을 거의 대신합니다.
        // 우리가 실행하려는 '관심사'의 코드가 대부분 이곳을 거쳐 표현됩니다.
        // 마치 메인 루틴이라고 생각할 수 있습니다. (엄연히 서브루틴으로 분류합니다.)
        System.out.println("잘 실행되고 있는지 확인합니다.");
    }
}

Main 함수에서 호출

main 함수에서 MainApplicaiton 인스턴스를 생성하고, run 함수를 호출합니다. 직전 글에서 작성한 JDBC Access Check 인스턴스와 함수는 이제 필요하지 않습니다.

import com.example.app.MainApplicaiton
import com.example.common.flyway.config.MyFlyway;

import static com.example.common.support.db.DatabaseAccessConstants.DB_PASSWORD;
import static com.example.common.support.db.DatabaseAccessConstants.DB_URL;
import static com.example.common.support.db.DatabaseAccessConstants.DB_USERNAME;

public class Main {

    public static void main(String[] args) {
        // 이전 글에서 작성한 플라이웨이 실행 코드입니다.
        MyFlyway myFlyway = new MyFlyway(DB_URL, DB_USERNAME, DB_PASSWORD);
        myFlyway.migrate();

        // 이제 본격적인 루틴을 실행합니다.
        MainApplicaiton application = new MainApplication();
        application.run();
    }

}

당연히 이 코드를 통해 Flyway가 동작하고, "잘 실행되고 있는지 확인합니다."라는 문자열이 콘솔 화면에 출력됩니다.

객체지향에서 위임(delegation)이란

객체지향에는 위임이라는 개념이 있습니다. 보통은 필드 수준에서 구현하는 편이죠. 프록시라고 부르는 편입니다. "내가 이것을 하겠다."라고 해 놓고, 다른 곳에 하청을 주는 것처럼 이해하셔도 꽤 편합니다.

이번에는 필드를 통한 위임까지는 사용하지 않았습니다. 지역 변수 수준에서 사용하였는데, 엄연히 위임 동작을 구현하고 있죠. (main 함수에 담을 주요 동작을 대부분 MainApplicationrun() 메서드에 담았죠.)


< Prev

(4) JDBC 연결하기