안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
* JDBC용 객체
* - Connection : DB의 연결정보를 담고 있는 객체(IP주소, PORT번호, 계정명, 비밀번호)
* - (Prepared)Statement : 해당 db에 sql문을 전달하고 실행한 후 결과를 받아내는 객체
* - ResultSet : 만일 실행한 SQL문이 SELECT문일 경우 조회된 결과들이 담겨있는 객체.
*
* ** PreparedStatement 특징 : SQL문을 바로 실행하지 않고 잠시 보관하는 개념
* 미완성된 SQL문을 먼저 전달하고 실행하기전에 완성시킨다.
* => 미완성된 SQL문 만들기 (사용자가 입력한 값들이 들어가는
* 공간에 ?(위치홀더)로 공간을 확보해둔다)
* 각 위치홀더에 맞는 값들을 셋팅.
* ** Statement(부모)와 PreparedStatement(자식)관계이다.
* ** 차이점
* 1) Statement는 완성된 SQL문 , PrepraedStatement는 미완성된 SQL문
*
* 2) Statement는 객체 생성시 stmt = conn.createStatement();
* PreparedStatement는 객체 생성시 pstmt = conn.prepareStatement(sql);
*
* 3) Statement로 SQL문 실행시 결과 = stmt.executeXXXX(sql);
* PredparedStatement로 실행시 ? 로 표현된 빈 공간을 실제 값으로 채워주는 과정을 거쳐야한다.
* pstmt.setString(?위치, 실제값);
* pstmt.setInt(?위치, 실제값);
* 결과 = pstmt.executeXXXXX();
* Service : 기존의 DAO의 역할을 분담
* 컨트롤러에서 서비스 호출후 서비스를 거쳐서 dao로 넘어갈것
* DAO호출시 커넥션 객체와 기존에 넘기고자 했던 매개변수를 같이 넘겨줌
* DAO가 작업이 끝나면 서비스에게 결과를 돌려주고 그에따른 트랜잭션 처리를 같이해줌
* => 서비스단을 추가함으로써 DAO에는 순수하게 SQL문을 처리하는 부분만 남게됨
*JDBCTemplate
*JDBC 과정중 반복적으로 쓰이는 구문들을 각각의 메소드로 정의해둘 돗
* "재사용"목적으로 공통 템플릿 작업을 진행
*
* 이 클래스에서의 모든 메소드들은 다 static메소드로 만들것
*
* 기존의 방식 : JDBC Driver 구문, 내가 접속할 url 정보 , 접속 계정 및 비밀번호
* 자바소스코드내에 명시적으로 작성함 => 정적 코드방식(하드코딩)
* - 문제점 : DBMS가 변경되거나, 접속할 URL, 계정명, 비밀번호가 변경되었으 경우
* 자바소스코드를 수정해줘야함.
* 수정된 내용을 반영시키고자한다면 프로그램을 재구동해야함 (사용자 입장에서도 프로그램 사용중
* 비 정상적으로 종료되었다가 다시 구동될수 있음)
* * 유지보수에 불편하다
* - 해결 : DB관련된 정보들을 별도로 관리하는 외부 파일로 만들어서 관리
* 외부파일로 KEY에대한 VALUE를 읽어들여서 반영시킬것 => 동적코딩방식
'⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆ > JDBC' 카테고리의 다른 글
JDBC - JDBC_Statement(Member) (0) | 2023.06.20 |
---|---|
JDBC - JDBC_Statement(MemberView) (0) | 2023.06.20 |
JDBC - JDBC_Statement(MemberDao) (0) | 2023.06.20 |
JDBC - JDBC_Statement(MemberController) (0) | 2023.06.20 |
JDBC - View, Controller, DAO, JDBC 객체 및 처리 순서, Statement 특징 (0) | 2023.06.16 |