본문으로 건너뛰기

JDBC를 사용해 DB 연결


Java Database Connectivity의 약자로 Java와 DB가 통신할 수 있게 해주는 API이다. DB의 DBMS 종류에 상관없이 독립적으로 사용 가능하다는 장점이 있다.

Drive

JDBC 드라이버는 각 DBMS와 연동하여 JDBC API를 사용할 수 있도록 해주는 JDBC API 모듈이다. DBMS의 종류가 많기 때문에 DBMS 종류에 맞는 JDBC 드라이버를 설치해 주어야 한다. 여기서는 Mysql을 사용할 것이다.

드라이버를 직접 설치해서 라이브러리에 등록하는 방법과 빌드 자동화 시스템인 Gradle을 사용하는 방법을 설명하겠습니다.

Case: library 지정 방법

드라이버(connector) 설치

설치 경로는 IDE를 통해서 혹은 공식홈페이지 등 다양하다. 설치는 검색을 통해 알아서 다운받도록 한다.

나의 경우 IntellJ Ultimate는 DataGrip의 모든 기능을 지원하여 Database tools and SQL 플러그인을 통해서 IDE상으로 Mysql을 연결하면서 사용된 드라이버 파일을 재사용했다.

mysql-connector-java-8.0.21.jar 와 비슷한 naming을 가진 .jar 파일이면 된다.

lib 지정

웹 어플리케이션에서 사용하는 .jar 파일이기 떄문에 WEB-INF/lib 에 배치되어야한다.

위와 같이 WEB-INF/lib 디렉토리가 없다면 직접 만들어줘야한다.

lib에 해당 드라이버를 추가하도록 한다.

info

C:\Program Files\apache-tomcat-9.0.37\lib 안에 있는 파일이 우선적으로 실행되는 라이브러리 파일들이다.
만약 Mysql 드라이버를 넣는게 귀찮으면 해당 폴더 안에 넣으면 모듈 마다 따로따로 라이브러리로 포힘하지 않아도 잘 작동된다.
즉, Tomcat 라이브러리 이외로 필요한 경우 \WEB-INF\lib 으로 추가되는것이다.

Test Code 작성

JDBC 연결을 확인할 코드를 작성한다.

아래의 코드를 추가하도록 한다.

connection.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Database Connection</title>
</head>
<body>
<%
Connection conn = null;
try
{
String url = "jdbc:mysql://localhost:3306/[DB 이름]";
String user = "[DB 접속 ID]";
String password = "[DB 접속 PW]";

Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
out.print("JDBC Success");
System.out.println("JDBC Success");
}
catch (SQLException ex)
{
out.print("JDBC Fail");
System.out.println("JDBC Fail");
System.out.println("SQLException: " + ex.getMessage());
}
finally
{
if (conn != null)
conn.close();
}
%>
</body>
</html>

많은 예제들이 Class.forName("com.mysql.jdbc.Driver"); 으로 Driver을 로드해온다.

위와 같이 불러와도 연결에는 지장이 없지만 warning이 찍히기 때문에 com.mysql.cj.jdbc.Driver 올바르다.

아래의 Warning log 출력됩니다

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

IntellJ에서 모듈 라이브러리에 JDBC 추가하면 .jar 을 압축풀어서 어떤게 있는지 보여주는거 뿐 연결에 지장은 없습니다.

실행

정상 작동하는 것을 확인할 수 있다.

Case: Gradle

library 지정

Gradle 모듈 생성 후 build.gradle 으로 이동해서 dependencies 코드블럭 안에서 포커스를 두고 Alt + Insert 으로 Mavent 아티팩트 종속성 추가를 클릭한다.

Mysql 드라이버를 다운로드 하므로 Mysql 검색 후 원하는 아티팩트를 다운받는다.

tip

> 을 눌러서 원하는 버전명으로 다운받을 수 있다.

Gradle Refresh 버튼을 클릭하여 변경된 내용을 반영한다.

Mysql 드라이버가 설치된 것을 확인할 수 있다.

Test 코드 작성 및 실행

lib 추가와 동일하게 코드 작성 후 실행해보면 된다.


parkgang