새로운 프로젝트를 DB에 연결하기

Jay·2023년 8월 21일

work

목록 보기
6/16
post-thumbnail

지난번에 가져온 프로젝트가 열리지 않았던 건 egov의 버전이 달라서였다. 저 포스팅 이후 egov버전을 맞췄더니 잘 열렸음.

오늘의 미션은 저걸 DB에 연결하는 것이었다.

분명 처음에 egovframework를 사용해볼 때 DB에 연결하는 실습도 했는데 왜 이렇게 낯선지.
그 때의 과정은 이 포스팅에 있다.

문제는 이번에는 그냥 '연결'만 하고싶은 거지 아직 controller라든가 VO같은 걸 만들 생각은 없는데 어떻게 연결을 확인하냐는거다.

프로젝트야 어차피 svn에서 다시 받아서 설정하면 된다는 마음으로 건드리다가 오류도 몇번 나고.. 빨간불도 뜨고..
egov버전이 달라서인지 위에 참고했던 포스팅과 기본 소스도 좀 달라서 더 헤맸다.

그래서 그냥 새 프로젝트를 만들어서 pom.xml이랑 context-datasource를 건드려 본 다음,
DB연결을 테스트하는 class를 만들어서 실행해봤다.

package dbTest;

import java.sql.Connection;
import java.sql.DriverManager;

public class MySQLConnectionTest {
	private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    
    // DB경로
    private static final String URL = "db URL";
    private static final String USER = "유저아이디";
    private static final String PASSWORD = "유저패스워드";
    
    public void testConnection() throws Exception {
    	Class.forName(DRIVER);
      
     	try {
        	Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
            System.out.println("CONNECTED");
            System.out.println(conn);
        } catch (Exception e) {
        	System.out.println("FAILED");
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
    	MySQLConnectionTest tester = new MySQLConnectionTest();
        
        try {
        	System.out.println("CONNECTED");
            tester.testConnection();
        } catch (Exception e) {
        	System.out.println("FAILED");
            e.printStackTrace();
        }
    }
}

그런데 이 코드를 run on server해도 console이 안 뜨는 거였다..
뭔가 잘못됐는지 왜 안되는 건지 context-datasourceglobals.properties, pom.xml을 얼마나 봤는지 모르겠다(사실 이 클래스내에서 url과 아이디 등등 설정해주고 있으므로 globals.properties는 관련이 없을 것인데도!).

그러다가 혹시나 하고 run > java application으로 실행하니

이렇게 잘 떴다는 사실.

여기서 궁금한 게 있었는데

  1. DB경로설정시
    com.mysql.cj.jdbc.Drivernet.sf.log4jdbc.DriverSpy의 두 가지 방법이 있는데 각각 뭐하는 건지?
    chat GPT는 이렇게 말했다.

    그렇다고 한다..

  2. 저 상단 DBtest코드의 final은 왜 들어가는건지?
    이것 또한 인터넷에서 찾아봤더니 final을 붙인 변수값은 변경할 수 없기에 불변성 유지와 스레드 안정성에 좋다고 한다.


어쨌든 연결 자체는 간단했는데 괜히 시간을 많이 쓴 느낌이 없잖아 있다..
DB연결 하나 하는데 이렇게 헤매도 되는건가?
아 그리고, 상단의 내가 참고했던 포스팅에선 pom.xml의 dependency에 net.sf를 추가해주는데, egov4.1에서는 pom.xml에 net.sf.supercsv가 있어서인지 딱히 추가해주지 않아도 db연결이 되는듯?
또 db url을 net.sf로 사용하지 않고 jdbc로 사용해서인지 새로만든 프로젝트에서는 아예 net.sf.supercsv부분을 주석처리했음에도 connected가 잘 떴다.

상단 테스트 코드 작성하는데에 도움이 된
포스팅1
포스팅2

profile
ㄱ이 아닌 개발자가 되고 싶은 사람

0개의 댓글