jquery가 갖고 있는 function
selecting을 한 element가 갖고 있는 function
하나의 함수를 실행하다 보면 단계적인 스코프를 참조한다
드라이버에 대한 사용방법은 다 통일되어야한다.
DB가 오라클이였다가 mysql로 바뀌게되더라도 코드를 다 수정해야하는 상황을 막기위해서.
어플리케이션에 대한 인터페이스만 참조한다.
실행코드의 캡슐화라는 구조
서비스 다오 구현할때 인터페이스를 구현했을 것이다.
인터페이스의 사용목적은?
인터페이스를 사용했을 때 얻을 수 있는 장점?
레이어를 쪼개면서 이것에 대해 해볼것임
드라이버를 찾고 빌드패스에 추가
드라이버는 버츄얼머신이 갖고있는 시스템은 아님
그래서 드라이버로딩하는 과정이 필요함 -- 커넥션 생성
배달부역할 - 쿼리객체 - statement
statement를 썼을 때 문제점도 파악할 예정
그다음 쿼리 실행 단계 -- 데이터를 가져오는 목적
조회메서드와 수정메서드로 나뉜다. 결과집합을 가져올것이냐 로우카운트를 가져올것이냐로 나뉜다는 것이다.
resultset -- 순서가 없고 포인터는 있는데 index가 없다
결과집합을 가져와서 놀고나서 close 끊어줘야한다
다음클라이언트가 서버를 사용할 수 있도록 가용자원을 돌려줘야한다.
단일책임 원칙에 따라 '책임분리' 목적으로 수업 진행할 예정
SOLID (S라는 녀석과 I라는 녀석을 살펴볼 예정)
다형성의 원리
모델1으로 만든 jdbcDesc.jsp를 모델2로 만들거야
controller는 servlet으로 따로 뺄거고 jsp는 view로 뺄꺼야
1.요청 받고 2.모델데이터만들어낼건데 3.(jdbc)결과집합이 돌아오면 모델데이터 만들어내서 4. 어떤 뷰를 쓸것인지 선택 5.뷰로 이동하는 방법
모델데이터를 만들어내는 부분을 별도로 분리시킬 수 있다.
또다른 객체를 만들어서 한다. -- DAO
서비스녀석이 왜 필요한지 볼 예정
jdbcDesc.jsp 들어있는 08번 폴더를 view폴더로 옮김으로써 모델1방식을 사용할 수 없고 모델2로 만들어야한다
07번 폴더가 있는데 왜 404가 뜨는지
false를 true로 바꿈
바꾸고 돌리면 이 jsp로 가라는 뜻
비동기검색기능
controller단에서 마샬링만 잘하면된다
다오는 건드릴 필요가 없다
계층형구조 정리
이메일 이름 계정관리 map을 활용
데이터베이스 활용 방식
데이터베이스 테이블
테이블 구조에 맞춰서 vo를 설계
다오에 구현체를 새로 만들어서 데이터베이스 접근
static{//클래스가 로딩이 될때 이 코드블럭은 생성자 다음에 실행되는 부분, 객체를 생성해야지만 사용할 수 있다.
//커넥션이 만들어져야한다 (오라클,mysql..등 어떤 DB에 대한 커넥션일수도 있다)
ResourceBundle bundle= ResourceBundle.getBundle("kr.or.ddit.db.dbInfo");
String driverClassName = bundle.getString("driverClassName");
url = bundle.getString("url");
user = bundle.getString("user");
password = bundle.getString("password");
try {
Class.forName(driverClassName);
//드라이버클래스를 메모리 공간에 로딩 --객체가 아니라 클래스 , 한번만 로딩하면 되는데 그 시점은 커넥션 생성하기 전 시점으로 빼야한다?
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
driverClassName = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@localhost:1521:xe
user = zhyun
password = java
3. Connection 생성
public static Connection getConnection() throws SQLException {
//3.Connection 생성
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
4.Query 객체 생성
1) Statement
2) PreparedStatement
3)CallableStatement
구현체는 driver가 가짐 (driver는 dao와 db의 매개체 역할?)
Statement stmt = conn.createStatement();
5.Query 실행
1) 조회 ResultSet executeQuery() Queryfor~DML(데이터 조작 쿼리)
결과집합을 단번에 가져올 수는 없음. next로 포인트를 옮겨가야됨.
2) 수정 int excuteUpdate() 가져올 수 없기 때문에 실행만. int값이 반환됨.
6.ResultSet활용
ResultSet은 while문, for등으로 next로 긁어왔다.
7.자원해제(close)