
Java 언어가 데이터베이스를 다루기 위해서는,
데이터베이스를 만든 회사(벤더)에서 제공하는 JDBC 드라이버를 먼저 메모리에 로드해야 한다.
⚠ 주의! 일반 클래스처럼 new 할 수없고,
JVM의 Method 영역에 개발자가 직접 올려야함.
👉 Class.forName()사용
이렇게 하면 JDBC 드라이버가 DriverManager에 자동 등록되어,
Java에서 DB에 접속할 수 있게 된다.
👉 DriverManager.getConnection() 사용해서 연결
전제: Oracle DB가 localhost:1521에서 실행되고 있어야 함
Java가 Oracle DB와 통신하려면 중간다리 역할을 하는 "JDBC 드라이버"가 필요함
🔗 JDBC : Java Database Connectivity
파일명 예: ojdbc6.jar, ojdbc8.jar, ojdbc11.jar (버전에 따라 다름)
jarJava ARchive(아카이브 파일) : Java 전용 ZIP 파일
Java 클래스 파일(.class), 메타데이터, 리소스들(이미지, 설정 파일 등)을 하나로 묶은 압축 파일임
Java 프로젝트에서 이 ojdbc.jar 파일을 참조하지 않으면 ClassNotFoundException 발생함.
▶ IDE에서 추가 방법
① 이클립스일 경우
프로젝트 우클릭 → Build Path → Configure Build Path
Libraries 탭 → Add External JARs → ojdbc6.jar 선택 (우리는 ojdbc6.jar 추가함)
② IntelliJ일 경우
File → Project Structure → Libraries → + 버튼 → Java 선택 → ojdbc6.jar 추가
🔍 확인:
Class.forName("oracle.jdbc.driver.OracleDriver");
//JVM의 메서드 영역에 개발자가 직접 로드 ⭐
System.out.println("드라이버 로드 성공");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "java", "비밀번호");
//"내 컴퓨터에서 실행 중인 1521번 포트(오라클 기본포트번호)의 XE 인스턴스에 접속한다"
if(con!=null) {
System.out.println("접속 성공");
}else {
System.out.println("접속 실패");
}
⭐ classpath설정 :
.jar 들어있는 파일경로(lib폴더에 넣었음) + \ + JDBC 드라이버 이름(mysql-connector-j-8.0.33).jar
(확장자 이름 .jar 빼먹지 말기!!!)
/*MySQL DB연동*/
package db;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
//ClassNotFoundException는 java.lang패키지라 import 안해도 됨
class DBTest{
public static void main(String[] args) {
//1단계) 제어하기를 원하는 드라이버 먼저 로드 (JVM-Method 영역)
try{
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("드라이버 로드 성공");
//2단계) 접속
String url="jdbc:mysql://localhost:3306/dev";
String id="root";
String pass="비밀번호";
//Connection : 접속 성공 후, 그 접속 정보를 가진 인터페이스
//이 객체가 null이면 접속 실패
Connection con=DriverManager.getConnection(url, id, pass);
if(con==null){
System.out.println("접속 실패ㅡ.ㅡ");
}else{
System.out.println("접속 성공 ^.^");
}
}catch(ClassNotFoundException e){
System.out.println("드라이버를 찾을 수 없습니다. 확인해주세요.");
}catch(SQLException e){
e.printStackTrace();
//에러 순서를 스택 순서로 출력해줘
}
}
}
DB연동 시작도 안했는데 울 뻔 ...ㅠㅠ 환경설정 어렵다