▼ Why ? What ?
이번 주 Database 강의 교수님께서 텀프로젝트에 대한 설명과 MySQL을 다운받고 (from Source or APT or Windows) JDBC 드라이버를 이용해 eclipse와 연결시키는 방법을 다루셨다. 난 Eclipse가 아닌 IntelliJ를 다루는 것이 좀 더 익숙해서 DB를 Intellij와 연동시켜봤는데, DB를 연동하는 과정이 생각보다 복잡하고 JDBC의 개념도 알아둘 필요가 있을 것 같아서 따로 정리해보려고 한다.
▼ JDBC
JDBC (Java Database Connectivity) ?
- Java에서 DB를 다룰 수 있도록 도와주는 Java API이다
➜ Java 언어와 DB를 연결해주는 통로와 같은 것 !
JDBC가 왜 필요할까 ?
- DB 학습시 SQL 툴을 이용해서 DB에 직접 값을 넣거나 조회하는 등의 작업을 수행했는데, 웹을 동작시킬 때마다 매번 이런 식으로 하는 것은 불가능 !
➜ 프로그램이 이 일을 대신할 수 있도록 만들기 위해 사용하는 것이 JDBC인 것이다
JDBC Manager
- JDBC Driver Manager는 라이브러리로 등록된 DB Driver를 관리하고, DB 커넥션을 획득하는 역할을 한다
- Driver Manager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식하고, 이 드라이버들에게 순서대로 데이터베이스 접속 정보를 전달해 커넥션을 획득할 수 있는지 확인한다
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
- 적절한 드라이버를 찾아 커넥션 구현체를 클라이언트에 반환해준다
// DriverManager.java
for (DriverInfo aDriver : registeredDrivers) {
// If the caller does not have permission to load the driver then
// skip it.
if (isDriverAllowed(aDriver.driver, callerCL)) {
try {
// 드라이버에 URL, DB 정보를 전달해 커넥션을 획득할 수 있는지 확인
Connection con = aDriver.driver.connect(url, info);
if (con != null) {
// 드라이버가 connection을 리턴하면 connection 반환
return (con);
}
// 드라이버가 connection을 리턴하지 않으면 다음 드라이버에 확인
} catch (SQLException ex) {
if (reason == null) {
reason = ex;
}
}
} else {
println(" skipping: " + aDriver.getClass().getName());
}
}
▼ DB 연결
IntelliJ - MySQL 연결
https://velog.io/@yiseull/IntelliJ-MySQL-%EC%97%B0%EB%8F%99
IntelliJ & MySQL 연동
macOS 13.2.1IntelliJ IDEA 2022.3.2 (Ultimate Edition)JDK 19.0.2MySQL 8.0.32이와 같은 환경에서 진행했습니다.먼저 MySQL에서 제공하고 있는 JDBC Driver인 MySQL Connector를 설치해야 합니다
velog.io
IntelliJ에서 DB에 접속해 쿼리를 실행하는 방법
[IntelliJ Ulitmate] DB 연결하고 쿼리 실행하기 (velog.io)
[IntelliJ Ulitmate] DB 연결하고 쿼리 실행하기
IntelliJ Ulitmate 에서 DB 에 연결하고, sql 을 실행하는 법을 알아봅시다.
velog.io
- 오류 발생
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.
➜ 'com.mysql.jdbc.Driver' 는 Connector/J 5.x 버전까지 사용됐고, 'Connector/J 8.x' 버전부터는 패키지 경로가 바뀌었기 때문에 'com.mysql.cj.jdbc.Driver' 를 사용해야 한다
Class.forName("com.mysql.cj.jdbc.Driver");