java + Postgre 세팅

박성현·2025년 8월 27일

개발중 학습

목록 보기
21/43

🔗 Spring + PostgreSQL 연결 로직 흐름


1️⃣ PostgreSQL 드라이버 추가

pom.xml에 PostgreSQL JDBC 드라이버를 등록합니다.

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.6.0</version>
</dependency>

2️⃣ DB 접속 정보 정의

DB 서버 정보(HOST, PORT, USER, PWD 등)를 상수로 관리합니다.

public class ServerDefines {
    public static class DatabaseConfig {
        public static final String HOST = "127.0.0.1";
        public static final int    PORT = 5432;
        public static final String USER = "postgres";
        public static final String PWD  = "password";
    }
}

3️⃣ DB 매니저 초기화 (싱글톤)

앱 전체에서 공유할 수 있도록 SharedPreferences 클래스에서 DB 매니저를 초기화합니다.

public class SharedPreferences {

    private static final String[] DATABASES = { "main_db" };
    private static SharedPreferences m_Instance = null;
    private ArrayList<PgQueryManager> m_dbs = new ArrayList<>();

    public static SharedPreferences getInstance() {
        if (m_Instance == null) {
            m_Instance = new SharedPreferences();
        }
        return m_Instance;
    }

    private SharedPreferences() {
        for (String db : DATABASES) {
            m_dbs.add(new PgQueryManager(
                ServerDefines.DatabaseConfig.HOST,
                ServerDefines.DatabaseConfig.PORT,
                db,
                ServerDefines.DatabaseConfig.USER,
                ServerDefines.DatabaseConfig.PWD
            ));
        }
    }

    public PgQueryManager getDb() {
        return m_dbs.get(0);
    }
}

4️⃣ 애플리케이션 시작 시 초기화

스프링 부트 실행 시점(ContextRefreshedEvent)에 DB 연결을 세팅합니다.

@Component
public class ApplicationStartup {
    @EventListener
    public void onApplicationEvent(ContextRefreshedEvent event) {
        SharedPreferences.getInstance();
        System.out.println("+++ Application Started, DB Initialized +++");
    }
}

5️⃣ 연결 흐름 요약

  1. PostgreSQL 드라이버 등록 (pom.xml)
  2. DB 접속 정보 정의 (ServerDefines)
  3. 싱글톤으로 DB 매니저 초기화 (SharedPreferences)
  4. 애플리케이션 시작 시 초기화 (ApplicationStartup)

👉 실행과 동시에 PostgreSQL 연결 준비 완료


개발 중 생긴 문제 ❗

코드를 git에 push한 뒤, 팀원이 DB 커넥션 관련 오류가 발생했다고 제보해주었습니다.
확인해보니 원인은 pom.xml에 추가한 dependency가 제대로 반영되지 않아 생긴 문제였습니다.

👉 결론적으로 Maven Update를 하지 않아 생긴 이슈였고, 다음부터는 새로운 dependency를 추가하거나 변경한 경우 반드시 maven update를 수행했다는 내용을 이슈 사항에 함께 기록해야겠습니다.

profile
개발기록장

0개의 댓글