https://docs.oracle.com/javase/8/docs/api/
JDBC (JAVA DataBase Connectivity)
- JAVA와 Database의 연동을 위한 프로그래밍 API
- Java.sql 패키지 안에 정의되어 있다.
- Java 프로그램에서 DB를 연동할 때 DBMS의 종류와 상관없이 통합적으로 처리하기 위해서 만들어졌다.
JDBC 프로그래밍 순서
1. JDBC 드라이버 로딩 (Java에서 어떤 DB를 사용할지)
2. 연결관리함수 있는 객체 생성 - Connection
3. 쿼리 실행을 위한 객체 생성 - PreparedStatement (SQL문을 전송,수신할 객체)
4. 쿼리 실행
5. 결과 사용 - select - ResultSet , Insert delete update - int형
6. ResultSet 종료
7. PreparedStatement 종료
8. Connection 종료
※ JAVA는 Stream 방식이어서 사용된 객체들은 Close 해주어야함 (순차적)
JDBC 드라이버 로딩
- DBMS마다 별도의 드라이버가 필요하다.
- 일반적으로 JAR파일 형태로 DBMS마다 기본적으로 제공한다.
- 드라이버 위치
- 11G
- C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar
- 18C
- C:\app\계정명\product\18.0.0\dbhomeXE\jdbc\lib\ojdbc8.jar
- 빌드패스를 통하여 프로젝트에 추가시켜주면 된다.
- Class.forName("JDBC드라이버 클래스의 완전한 이름");
- 주요 DBMS JDBC 드라이버 클래스
- oracle - oracle.jdbc.driver.OracleDriver - 둘다 동일한데 위에건 없어지는중
- oracle.jdbc.OracleDriver
- MySQL - com.mysql.jdbc.Driver
- MS-SQL - com.microsoft.sqlserver.jdbc.SQLServerDriver
[추가]
- Project명 우클릭 ->Build Path -> Configure Build Path -> Java Bulid Path ->Libraries -> 사진2 참조
2. 연결관리 객체 생성 - Connection
- java.sql.Connection - interface
- Java에서 자주 사용되는 interface같은 경우에는 객체 생성을 해서 반환해주는 메소드가 존재
- java.sql.DriverManager 클래스 안에 getConnection이라는 메소드를 통하여 객체 생성을 해서 반환
- url - 어떤 Data의 정보와 위치를 저장하고 있는 Data.
- DB의 위치와 정보를 담고 있는 데이터.
- 형식
- jdbc:DBMS명:데이터베이스식별자(Host, Port, SID ... 이부분은 DBMS마다 다름)
- jdbc:oracle:드라이버(OCI(별도의 모듈), thin(jar)):@Host(DB가 위치한 IP):Port:SID(설치버전)
- jdbc:oracle:thin:@localhost:1521:xe
- user = 접속할 계정의 아이디
- password = 접속할 계정의 비밀번호
create table dbtest(
name varchar2(15),
age number,
height number(10,2),
logtime date);
3. 쿼리 실행을 위한 객체 생성 - PreparedStatement
- java.sql.Statement
- 정적쿼리 방식
- 쿼리 실행마다 JVM에게 쿼리를 넘겨주어야 한다.
- 넘어가는 데이터가 보이는데 이는 보안에 문제가 있다.
select * from testmember where name = ' + name + ';
- java.sql.PreparedStatement - 웹모듈 3.0버전 이상부터의 권장 방식
- 동적쿼리 방식
- 객체 생성할때 한번만 JVM에게 쿼리를 넘겨주면 된다.
- 필요한 데이터를 JVM에게 넘겨주는 방식 (들어갈 데이터를 ? 처리하여 실행)
select * from testmember where name = ?
4. 쿼리 실행
- Query 실행을 위한 Method
boolean execute() - X
- ResultSet 타입이면 True 아니면 False를 반환
long execute.LargeUpdate() - X
- insert , delete, update
- 대량의 데이터를 이용할 때 사용
ResultSet executeQuery()
- select 문에서 실행 결과를 받을 때 사용하는 메소드
int executeUpdate()
- insert, delete, update 문에서 실행 결과를 받을 때 사용하는 메소드
JavaBean(자바빈)
- 데이터를 표현하는 목적으로 사용되는 자바 클래스..
- DB의 데이터 처리를 위해서 만들어지는 클래스..
- 뷰페이지와 로직페이지를 서로 분리하기 위해서 만들어지기 시작했다...
- 하나의 테이블에서는 하나의 DTO(VO)와 DAO가 셋트로 이루어진다..
- DTO(Data Transfer Object) , VO(Value Object)
- 데이터를 DB로 보내거나 DB로 부터 레코드를 가져올때 하나의 덩어리 즉 객체로 만드는 클래스..
- DAO(Data Access Object)
- 객체화 된 DTO를 가지고 DB에 접속시 사용되는 메소드들을 정의한 클래스..
- 드라이버 로딩은 생성자에 들어가는게 적합함
- 규칙
- 클래스는 반드시 특정 패키지 소속이어야 한다...
- DTO의 멤버변수는 Property(프로퍼티)라고 부른다..
- Property명은 반드시 테이블의 컬럼명과 동일하여야 한다..
- Property의 접근 지정자는 반드시 private이어야 한다...
- Property마다 getter와 setter는 존재하여야 한다..
- 반드시 디폴트 생성자는 존재하여야 한다..
※ property == input 태그의 name == 컬럼명
'Study! > JSP.' 카테고리의 다른 글
[JDBC 응용] 학생 Table , Query로 접근하기 (0) | 2021.12.21 |
---|