JDBC 드라이버
-DBMS와 통신하기 위해서는 먼저 로딩해 주어야함

  • 로딩 코드
Class.forName(“oracle.jdbc.driver.OracleDriver");

JDBC URL
-DBMS와의 연결을 위한 식별 값
일반적인 구성
-jdbc:[DBMS]:[데이터베이스식별자]
-Oracle: jdbc:oracle:thin:@localhost:1521:XE

DB연결 생성
DriverManager를 이용해서 Connection생성
-DriverManager.getConnection(String jdbcURL, String user, String password)

Statement(인터페이스,객체생성 안됨) 이용한 쿼리 실행

ResultSet에서 값 조회
-rs에 불러온 값 저장
여러값일 경우 반복문

데이터 조회 주요 메서드
-rs.getString("MEMBER") = MEMBER의 값을 꺼내온다.

예제12.2,3 = update = 수정
경로 - 같은 폴더 내 이름만
- /web/jdbc/update/update.jsp
import - Resultset

SQL
'"name"'
_where 앞에 띄우기

12.4 viewMember =
select*from member
where

URL 뒤에
?memberid=SSS
->불러와짐

오라클 - LONG형(varchar X) 타입 값

12.5 LONG데이터 꺼내오기
쿼리문 view와 거의 동일 history만 다름
where앞에 띄어쓰기해주기

객체 선언
reader = rs.getCharacterStream("HISTORY");
ch = 배열 , [512] 512자씩 불러와서 읽을 것
변수설정 len 값이 없을때 -1

PreparedStatement
'' 안쓰기 위해 사용
-SQL의 틀을 미리 정해 놓고 나중에 값 저장
-''대신 ?가 들어감
-나중에 첫번째 물음표에 "_"값을 넣고
->1,"madvirus"

장점
-코드의 간결함(문자열 연결에 ''가 빠짐)
-반복해서 실행되는 동일 쿼리의 속도를 향상

1.jdbc드라이브 로딩

<%response.redirect

트랜잭션
-쿼리 묶음이 다 동작되어야 실행->결과를 DB에 반영
-묶음중 하나라도 동작 안될 경우 취소

SQL EZ
delete from member;
rollback; ->트랜잭션

트랜잭션 하는 코드

try {
    conn = DriverManager.getConnection(...);
    // 트랜잭션 시작
    conn.setAutoCommit(false);
    ... // 쿼리 실행
    ... // 쿼리 실행
    // 트랜잭션 커밋
    conn.commit();
} catch(SQLException ex) {
    if (conn != null) {
        // 트랜잭션 롤백
        conn.rollback();
    }
} finally {
    if (conn != null) {
        try {
            conn.close();
        } catch(SQLException ex) {}
    }
}

primary key를 item id 에 지정해서 걸기
costraint
foreign key 참조키(다른 테이블의 칼럼을 참조한다)
references

예제.insertitem ->무조건 에러
그 후 위 예제 URL뒤에 id=1
또 넣으면 중복되서 에러
id=2&error=1234 (트랜잭션)
->에러 & item테이블에 아무것도 안들어감
트랜잭션 실행 하면 item,item detail 둘다들어가거나 안들어가거나임
안 하면 둘 중에 하나는 들어갈 수 있음

insertitem예제 보면 JDBC 드라이빙 로딩이 빠져있음
이게 빠져도 돌아갈 수 있게 환경설정할거임
이거 설정해놓으면 JSP만들때마다 드라이빙 안넣어도 됨
->책. 웹 어플리케이션 구동 시 JDBC 드라이버 로딩하기
톰캣만 실행하면 오라클이 로딩되게하는 것
web.xml에다가 톰캣 실행하면 오라클이 로딩하게 하기
1. 클래스 만들기(Loader)
2. 책 경로 신경쓰지 않기 패키지 이름보고 클래스이름이랑 갖춰서 만들기
3. EZ - Loader패키지 - Loader클래스
4. 패키지: ez.loader 클래스 : loader
5. Loader 상속받음 HttpServlet을
6. HttpServlet 소스- 오버라이드 0GenericServlet에서 init을
선택해서 오버라이드 (init메소드은 초기화)
7. ServletConfi타입의 객체 = web.xml의 내용을 다 불러온 내용
8.jdbcDriver = 오라클 주소를 가져옴 = drivers
10.web.xml에 코드 추가해야함 책 참고 ~~
패키지.패키지.클래스 ->내꺼참조!!!

커넥션 풀(JSP할 동안 계속 사용)/커넥션을 쓰고 반납하려고 만듦
데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool)속에
저장해 두고 있다가 필요할 때에 커넥션을 풀에서 가져다 쓰고
다시 풀에 반환하는 기법

커넥션을 생성하는 데 드는 연결 시간이 소비되지 않음
커넥션을 재사용하기 때문에 생성되는 커넥션 수가 많지 않음

1.DBCP(데이터베이스 커넥션 풀)
필요 라이브러리
Commons-DBCP API 관련 Jar 파일: commons-dbcp-1.2.2.jar
Commons-Pool API의 Jar 파일: commons-pool-1.4.jar

2.(핵중요) src/main/java 에다가 pool.jocl 만들기
확장자임. File에다가 직접 써줘야함
커네션 풀에 들어가는 정보가 들어가는 설정 파일
무조건 있는 그대로!!!대소문자 똑같이 쓰기!!
책이랑 다름
zoom용으로 보기

  1. 커넥션 풀 초기화하기
    DBCPInit 클래스 만들기
    loader 클래스랑 똑같음
    커넥션풀을 초기화시켜주는 (org.apache.commons.) 책

4.web.xml에다가 로직 넣기

톰캣 실행하면 이제 DBCInit가 실행 그러고 Oracledriver가 실행

5.테스트 Usingpool
= viewmemberList 랑 똑같음
pool = pool.jocl 이랑 같음

실행하면
MEMBER테이블의 내용이 나옴~

프로젝트 다이나믹 웹 프로젝트 커넥션 풀세팅
1.lib 카피해서 웹에 있는 lib에 카피
2.pool 파일 만들고
3.loader에 DBCPInit
4.web.xml 카피해서 넣으면 뭐 많이 생기니까 DBCPInit 세팅만 필요

profile
개발괴발

0개의 댓글