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)
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용으로 보기
4.web.xml에다가 로직 넣기
톰캣 실행하면 이제 DBCInit가 실행 그러고 Oracledriver가 실행
5.테스트 Usingpool
= viewmemberList 랑 똑같음
pool = pool.jocl 이랑 같음
실행하면
MEMBER테이블의 내용이 나옴~
프로젝트 다이나믹 웹 프로젝트 커넥션 풀세팅
1.lib 카피해서 웹에 있는 lib에 카피
2.pool 파일 만들고
3.loader에 DBCPInit
4.web.xml 카피해서 넣으면 뭐 많이 생기니까 DBCPInit 세팅만 필요