[IntelliJ] IntelliJ에서 MySQL과 JDBC를 연동한 웹 프로젝트 생성하기

2023. 6. 20. 21:53프로그래밍/웹 개발

문제상황 : 기존에 eclipse로 JDBC 실습하던 것을 IntelliJ 환경으로 바꿈.

크게 다를 것이 없어보이긴 했지만 항상 환경 하나 하나 바꾸는 거에 민감했기 때문에 노심초사.

그러나 싨제로 별 문제 없이 잘됐다. 이 글은 JDBC를 처음부터 끝까지 연동하는 방법에 대한 글이 아님.

 

 

참고 : 드라이버는 JDBC 내부적으로 존재하는 클래스라고 보면 되고 Connector는 DB에서 제공하는 파일이다.

Java의 드라이버와 DB의 커넥터과 연동돼야 web에서 사용할 수 있음.

 

* java 클래스 import 목록

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

    Connection conn = null;
    String dbURL = "jdbc:mysql://localhost:3306/memolists?serverTimezone=Asia/Seoul&useSSL=false&useUnicode=true&characterEncoding=utf8";
    String dbID = "root";
    String dbPassword = "1234";
    System.out.println("바깥");
    try {
        //드라이버 로딩
        Class.forName("com.mysql.cj.jdbc.Driver");


        //Connection생성
        conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}

우선 Oracle을 쓰든 MySQL을 쓰든 기본적으로 JDBC를 사용하기 위해서는 다음과 같이 기본 설정을 해줘야한다.

JDBC는 Java내에서 DB를 연동하기 위한 하나의 방법으로 글자 그대로이다(Java Database Connectivity). JDBC를 이용하기 위해서는 위와 같이 코드를 작성하고 본인의 pc에 깔려있는 Oracale 혹은 MySQL의 username과 password를 입력해 접속을 시도해야 한다. 

중요한 것은 처음 DB를 생성할 때의 포트번호가 default값으로 3306으로 설정되는데 이 부분이 본인의 DB와 다르다면 확인해봐야 한다.

현재 실행중인 DB server의 port번호를 확인하면 된다. 비밀번호 역시 일반적으로 1234 로 설정하지만 다른 비밀번호로 설정했을 경우 바꿔줘야한다. 

 

여기서 중요한 것은 Library에 Connector를 추가해줘야 한다는 것이다.

일반적으로 JDBC를 연동하는 것은 Web Project에서 실행하기 때문에 web(Eclipse의 경우 webapp) 폴더 내에 WEB_INF 폴더가 있을 것이다. 여기에 lib폴더 안에(lib폴더가 없다면 생성해야 함) 아래에서 본인의 os에 맞는 connector를 설치 후 집어넣으면 된다. 

 

https://dev.mysql.com/downloads/connector/j/

 

MySQL :: Download Connector/J

MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

dev.mysql.com

 

또 다른 방법으로는 External Libralies(외부 라이브러리)로 추가하는 것이다. IntelliJ에서 프로젝트 탭을 보면 제일 아래에 External Libralies라는 탭이 바로 사용자가 설정한 외부 경로에서 가져오는 라이브러리 폴더를 뜻한다. 

일반적으로는 단축기 ' 커맨드  + ;  ' 를 통해 Project Structure에 들어가서 Modules 혹은 Libralies에서 lib폴더, 혹은 jar파일 자체를 추가하면 된다. 그러나 나는 이미 Tomcat을 사용하기 위해 tomcat 경로를 External Libralies로 지정한 상태여서 그런지 추가적으로 Library를 등록해도 run시 ClassNotFoundException이 발생했다.

기존의 라이브러리 아래에 이렇게 새롭게 jar파일을 추가해도 커넥터를 읽어오지 못했다. Module에 추가하든 Libralies에 추가하든 같았다.

라이브러리 폴더 하나에만 의존성을 갖는 것도 말이 안되는 건 맞으나 현재로서는 우선 되는 방법으로 진행하는 편이 낫긴 하다...

 

 

 

결론 : JDBC를 이용하기 위해서는 External Libralies에 jar파일(커넥터)을 추가하던지 web.WEB_INF.lib 폴더에 커넥터를 집어넣자.