-
오라클 DB 정리09-JDBC비전공자 공부일기/:: DB - SQL 2019. 5. 29. 10:26
● JDBC(Java DataBase Connectivity)
1. JDBC 환경 구축
- JDK 설치 및 환경설정
http://www.oracle.com => 다운로드
환경변수 => JAVA_HOME 및 Path 설정
- DBMS(Oracle) 설치
http://www.oracle.com => 다운로드
- DBMS(Oracle) Driver 다운로드 후 JDK가 사용할 수 있도록 복사
Oracle 경우
>> C:\oracle\product\11.2.0\dbhome_1\jdbc\lib 디렉토리 : ojdbc6.jar(oracle driver)
OracleXE 경우
>> C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib 디렉토리 : ojdbc6.jar(oracle driver)
※ 이클립스 사용시 라이브러리 추가 기능을 이용하여 ojdbc6.jar 파일을 프로젝트에 추가
2. JDBC 프로그램 작성 => java.sql 패키지의 인터페이스 이용
1) Driver 클래스 메모리 로드 => Driver 클래스를 객체 생성
Class.forName("oracle.jdbc.driver.OracleDriver");
2) Connection 객체 얻어오기 => DB 접속 정보를 저장한 객체
Connection Connection객체
=DriverManager.getConnection(URL주소, 유저명, 암호);
※ URL주소 => Oracle
jdbc:oracle:thin:@서버주소:port번호:SID
3) Statement객체를 얻어오기 => SQL명령을 입력하여 실행하기 위한 객체
Statement Statement객체=Connection객체.createStatement();
4) SQL 명령 전송 실행 => Statement객체의 executeUpdate() 메소드 또는 executeQuery() 메소드
Statement객체.executeUpdate(SQL명령); => DML명령(DDL명령) 사용시 - int 반환(변경행의 갯수 반환)
Statement객체.executeQuery(SQL명령); => Select 명령 사용시 - ResultSet객체 반환(검색된 데이타들의 정보)
※ ResultSet 객체를 얻어온 경우 커서를 이용하여 행 이동(next() 메소드)후 getXXX() 메소드를 이용해 데이타를 얻어와 출력
5) Connection객체 및 SQL 관련 객체 종료
Statment객체.close();
Connection객체.close();
● Transation 사용 방법
- Application에서 실행된 SQL 명령은 Auto Commit
- Connection객체.setAutoCommit(false); 을 이용해 트렌젝션을 사용할 수 있다.
● ResultSet 객체
- DB에서 select된 정보를 저장하기 위한 객체 => 2차원 배열 형식으로 표현
- ResultSet 객체에 존재하는 커서를 이용하여 데이타(행)을 이동하여 필드값(열)을 얻어올 수 있다.
=> ResultSet객체.next() : 커서를 아래로 이동하며 데이타가 있을 경우 true를 반환
- ResultSet객체의 커서 위치에 존재하는 행의 필드값은 getXXX() 메소드를 이용하여 값을 얻어온다.
=> ResultSet객체.getXXXX(index 또는 필드명)
=> XXXX는 자료형을 뜻하면 자료형을 모를 경우 String을 사용한다.
※ ResultSetMetaData 객체 : 검색된 테이블의 정보(열의 갯수,데이타 타입등)를 저장한 객체
● Statement 및 PreparedStatement => 명령 객체
- Statement => 완성된 형식의 SQL 명령을 실행
- PreparedStatement => 미완성된 형식의 SQL 명령을 실행(SQL명령에 Java 변수 사용시)
=> InParameter를 사용하며 setXXX() 메소드를 이용해 SQL 명령을 완성한다.
● 컨텍션풀(ConnectionPool)
- ConnectionPool : Connection 객체를 미리 만들어 놓은 클래스
- ConnectionPool을 만들어 주는 이유
=> 미리 Connection 객체를 만들어 필요한 경우 바로 사용 가능 - 빠른 실행 가능
=> Connection 객체의 숫자를 제어
- ConnectionPool을 사용하는 방법
=> ConnectionPool 클래스 사용 또는 WAS(Apache) DBCP(DataBase ConnectionPool) 사용
- ConnectionPool 클래스 사용
주의) db.properties 파일을 src 디렉토리에 복사
주의) 생성자를 이용하여 ConnectionPool 객체 생성 불가 => 생성자가 private 접근지정자를 가지고 있기 때문
ex) ConnectionPool pool=new ConnectionPool();
왜??? ConnectionPool 객체가 여러 개 생성되는 것을 막기 위해 => SingleTon 기법
● DTO 클래스 및 DAO 클래스
- DTO(Data Transfer Object) 클래스 => VO 클래스, JavaBean 클래스
=> Table의 정보를 저장하기 위한 클래스
=> Table의 필드와 동일한 자료형을 가지고 있는 멤버변수와 생성자, Setter & Getter 메소드로 구현
- DAO(Data Access Object) 클래스 => Manager 클래스
=> Table과의 작업을 전담하는 클래스
=> 테이블의 데이타 삽입,삭제,변경,검색등의 메소드 구현'비전공자 공부일기 > :: DB - SQL' 카테고리의 다른 글
JDBC - Statement, Connection (2) 2019.05.31 JDBC - ResultSet (0) 2019.05.31 오라클 DB 용어, 명령문 정리08-PL/SQL (0) 2019.05.28 오라클 DB 용어, 명령문 정리07- 시퀀스, 인덱스, 동의어, 권한, DCL (0) 2019.05.27 오라클 DB 용어, 명령문 정리06 -테이블 명령어, 뷰, 인라인뷰 (1) 2019.05.24