-
JDBC - 작성방법카테고리 없음 2019. 5. 30. 20:44
2019.05.30 필기
< 클래스 로드 >
1) ClassLoader에 의해 클래스파일을(소스X, 컴파일된 파일) 읽어 메모리에 저장 =로드
>>jvm이 자동으로 수행 (묵시적) -- 프로그램에서 한 번만 동작(Static 메모리에 저장되므로)
2) new 연산자로 메모리에 저장된 클래스(차별화를 위해 Clazz라고 부름)의 생성자를 호출하여 인스턴스 생성
>>개발자가 수동으로 수행 (명시적) >> 생성된 인스턴스를 참조변수에 저장하여 지속적 사용이 가능하도록 만듦
3) 참조변수에 저장된 인스턴스로 메소드 호출 >> 기능 구현개념 재정리 :
- DBMS : 오라클, MySQL 등 DB를 관리하기 위한 시스템import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Enumeration; import oracle.jdbc.driver.OracleDriver; public class JdbcDriverLoadApp { public static void main(String[] args) { // //Driver 클래스로 인스턴스를 생성하여 JDBC Driver로 등록 // // => JDBC Driver : DriverManager 클래스에 등록된 Driver 인스턴스 >> 클래스를 이용하여 DBMS 접속 가능 // // DriverManager 클래스 : DBMS 서버에 접속하기 위한 기능을 제공하는 클래스 // // 동일한 Driver 인스턴스가 DriverManager 클래스에 등록 - 비효율적(1개만 있으면 되는데 왜 굳이!) // // //1) OracleDriver 클래스로 인스턴스 생성 // OracleDriver driver=new OracleDriver(); // // //2) Driver 인스턴스를 DriverManager 클래스의 메소드를 이용하여 JDBC 드라이버로 등록 // //DriverManager.registerDriver(Driver driver) : Driver 인스턴스를 전달받아 JDBC Driver로 등록하는 메소드 // // => SQLException 발생 - 예외처리 // try { // DriverManager.registerDriver(driver); // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } //OracleDriver 클래스를 문자열로 전달하여 메모리에 로드하여 저장 // => Static영역에서 OracleDriver 인스턴스 생성 후 DriverManager 클래스에 JDBC Driver로 등록 - 한번만 실행 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { System.out.println("OracleDriver클래스를 찾을 수 없습니다."); System.exit(0); } //DriverManager.getDrivers() : DriverManager 클래스에 등록된 JDBC Driver 목록을 반환하는 메소드 //Enumeration : 콜렉션 인스턴스의 정보를 제공받아 반복처리 기능을 제공하는 인스턴스 Enumeration<Driver> drivers = DriverManager.getDrivers(); //Enumeration.hasMoreElements() : Enumeration 인스턴스에 제공 가능한 인스턴스가 존재할 경우 true를 반환하는 메소드 while(drivers.hasMoreElements()) { //Enumeration.nextElement() : Enumeration 인스턴스에 저장된 요소를 반환하는 메소드 Driver d=drivers.nextElement(); System.out.println(d); } System.out.println(drivers.toString()); } }
<자바-DBMS 연동>
1. 드라이버 등록
OracleDriver 클래스를 DriverManager클래스에 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
2. 서버 접속 - Connection
Protocol:ServerName:Port:ResourcePath
Oracle DBMS URL >> jdbc:oracle:thin:(username)@ServerName(또는 IP):1521:SID
--- Protocol:ServerName:Port/ResourcePath 간혹 콜론 대신 슬래시로 구분하기도 함(벗! 콜론이 정석)
--- thin은 접속하겠다는 의미
--- 1521은 오라클 전용 포트
--- SID는 보통 XEDriverManager.getConnection(String url, String user, String password)
: 서버 접속정보를 전달하여 DBMS 접속 후 접속정보(Connection 인스턴스)를 반환하는 메소드- Connection 인스턴스 : DBMS 접속정보를 이용하여 기능을 제공하는 인스턴스
- URL : 인터넷에 존재하는 자원을 주소 형식으로 표현하기 위한 방법
// 1521포트-- / SID -- 데이터베이스의 고유값(XE등)
// 프로젝트 할때는 localhost 말고 내 컴터주소를 넣는다.3. 명령문 - Statement
4. SQL 전달
- executeQuery()
- executeUpdate()
5. 결과처리
※ResultSet을 이용하면 검색행에 INSERT, UPDATE, DELETE 등도 가능하다
6. JDBC 자원 제거
※ 생성순서 반대로 제거!
try {
Statement변수.close();
Connection변수.close();
} catch { }