Java 프레임워크 만들기 - JSP

자바 마리아디비 연결 (JDBC 드라이버) - Java MariaDB Connection JDBC Driver

carrotweb 2021. 5. 26. 11:25
728x90
반응형

Java에서 JDBC 드라이버로 마리아디비(MariaDB)와 연결하겠습니다.

 

Spring으로 Project를 진행하신다면, 다음으로 이동하여 보시기 바랍니다.

Spring은 Maven Spring Project 메뉴에서 설명하고 있습니다.​

 

1. "https://mvnrepository.com"를 접속하고 검색에 "mariadb-java-client"를 입력하고 검색합니다.

 

"JDBC driver for MariaDB and MySQL"인 "MariaDB Java Client"를 클릭합니다.

 

"Version"중에서 "2.7.2"를 클릭합니다.

 

"Maven"탭에 있는 스크립트를 복사합니다.

<dependency>
	<groupId>org.mariadb.jdbc</groupId>
	<artifactId>mariadb-java-client</artifactId>
	<version>2.7.2</version>
</dependency>

 

2. "test2" 프로젝트의 "pom.xml"을 오픈하여 붙여넣기하고 저장합니다. 그러면 Maven에서 "mariadb-java-client-2.7.2.jar"파일들을 자동으로 다운로드 받습니다.

다운로드가 완료되면 자동으로 빌드하고 "test2" 프로젝트의 [Java Resources > Libraries > Maven Dependencies]에 "mariadb-java-client-2.7.2.jar"파일이 연결되어 있는 것을 확인할 수 있습니다.

 

3. "TestServletContextListener.java"의 "contextInitialized"에서 마리아디비(MariaDB)와 연결하기 위해 JDBC 드라이버(driver)를 로딩하겠습니다. "ServletContextListener"에서 하는 이유는 디비를 먼저 로딩하여 다오(dao) 클래스에서 사용할 수 있게 의존성 주입(Dependency Injection - DI)하기 위해서 입니다.

마리아디비(MariaDB) JDBC 드라이버(driver) 클래스 명인 "org.mariadb.jdbc.Driver"으로 클래스를 로드하겠습니다.

try {
	Class<?> dbDriver = Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("마리아디비 드라이버(" + dbDriver.toString() + ")가 로딩됨");
} catch (ClassNotFoundException e) {
	System.out.println("마리아디비 드라이버가 로딩되지 않음");
	e.printStackTrace();
}

 

"Project Explorer"에서 "mariadb-java-client-2.7.2.jar"파일을 펼처보면 "org.mariadb.jdbc"에 "Driver.class"파일이 있는 것을 확인할 수 있습니다.

 

4. "Servers"탭에서 "tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다.

"Console"탭을 클릭하면 마리아디비 드라이버(class org.mariadb.jdbc.Driver)가 로딩된 것을 확인할 수 있습니다.

[Console]

마리아디비 드라이버(class org.mariadb.jdbc.Driver)가 로딩됨

"Class.forName"으로 클래스만 로드하였는데 자동으로 인스턴스가 생성되어 로드되었습니다.

그 이유는 초기화 처리로 "Driver.class"파일에 있는 "static"절이 실행되면서 드라이버(driver)의 인스턴스를 생성하였기 때문입니다. 자세한 설명은 이전 자바 클래스 동적 로딩(

)를 참고하시면 됩니다.

실제로 "static"절에서 드라이버(driver)의 인스턴스를 생성하였는지 확인해보겠습니다.

"Project Explorer"에서 "mariadb-java-client-2.7.2.jar"파일을 펼처 "org.mariadb.jdbc"에 "Driver.class"파일을 클릭합니다.

static {
	try {
		DriverManager.registerDriver(new Driver(), new DeRegister());
	} catch (SQLException e) {
		throw new RuntimeException("Could not register driver", e);
	}
}

"new Driver()"으로 드라이버(driver)의 인스턴스를 생성하고 "DriverManager"에 ""registerDriver"메서드를 통해 드라이버(driver)를 등록합니다. 드라이버가 "static"절에서 인스턴스가 생성되어 매번 호출되어도 새로운 인스턴스는 생성되지 않습니다.

"DriverManager"(드라이버 매니저)란 JDBC 드라이버들을 관리하는 클래스로 드라이버를 등록하고 해제하고 디비와 연결해주는 기능을 합니다.

"Servers"탭에서 "Tomcat8"를 선택하고 "stop"버튼(stop the server)을 클릭합니다.

 

5. "DriverManager"에 마리아디비(MariaDB) JDBC 드라이버(driver)라 등록되었는지 확인하기 위해서 "DriverManager"에서 등록된 드라이버(driver)들을 가져와 확인해보겠습니다.

Enumeration<Driver> drivers = DriverManager.getDrivers();
if (drivers.hasMoreElements()) {
	while (drivers.hasMoreElements()) {
		Driver driver = drivers.nextElement();
		System.out.println("드라이버 : " + driver.toString());
	}
} else {
	System.out.println("드라이버가 없음");
}

"Servers"탭에서 "tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다.

"Console"탭을 클릭하면 마리아디비 드라이버(class org.mariadb.jdbc.Driver)가 인스턴스(@5f0e7bc4)가 생성되어 등록되어 있는 것을 확인할 수 있습니다.

[Console]

마리아디비 드라이버(class org.mariadb.jdbc.Driver)가 로딩됨
드라이버 : org.mariadb.jdbc.Driver@5f0e7bc4

"Servers"탭에서 "Tomcat8"를 선택하고 "stop"버튼(stop the server)을 클릭합니다.

6. 마리아디비(MariaDB)에 접속하고 접속을 종료하겠습니다.

마리아디비(MariaDB)에 접속하기 위해서 디비 접속 URL를 설정해야 합니다.

jdbc:mariadb://{host}[:{port}]/[{database}]

마리아디비(MariaDB)에 접속하기 위해

"{host}"는 마리아디비(MariaDB)의 호스명이나 IP를 입력합니다. PC에 설치되어 있는 마리아디비(MariaDB)에 접속함으로 "localhost"(호스명) 또는 "127.0.0.1"(IP)으로 입력합니다.

"{port}"는 마리아디비(MariaDB)의 접속 포트를 입력합니다. 기본 포트는 "3306"입니다. 만약 설치 시 "Port"를 변경하셨다면 변경된 포트번호를 입력합니다.

"{database}"는 마리아디비(MariaDB)에 접속할 데이터베이스명을 입력합니다. 마리아디비(MariaDB)에서 기본적으로 제공하는 샘플 데이터베이스인 "test"를 입력합니다.

jdbc:mariadb://localhost:3306/test

"DriverManager"의 "getConnection"메서드를 이용하여 접속합니다.

Connection DriverManager.getConnection(String url, String user, String password)

"url"은 디비 접속 URL을 입력합니다.

"user"은 접속 계정을 입력합니다.

"password"은 접속 패스워드를 입력합니다.

Connection connection = null;
// jdbc:mariadb://{host}[:{port}]/[{database}]
String databaseConn = "jdbc:mariadb://localhost:3306/test";
try {
	connection =  DriverManager.getConnection(databaseConn, "root", "password");
	System.out.println("마리아디비에 연결됨");
} catch (SQLException e) {
	System.out.println("마리아디비에 연결하지 못함");
	e.printStackTrace();
} finally {
	if (null != connection) {
		try {
			connection.close();
			System.out.println("마리아디비에서 연결을 종료함");
		} catch (SQLException e) {
			System.out.println("마리아디비에서 연결을 종료하지 못함");
			e.printStackTrace();
		}
	}
}

 

"Servers"탭에서 "tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다.

"Console"탭을 클릭하면 마리아디비에 접속하고 바로 접속을 종료한 것을 확인할 수 있습니다.

[Console]

마리아디비 드라이버(class org.mariadb.jdbc.Driver)가 로딩됨
드라이버 : org.mariadb.jdbc.Driver@27a9b44a
마리아디비에 연결됨
마리아디비에서 연결을 종료함
728x90
반응형