반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

JDBC - Connection, Statement, PreparedStatement, ResultSet, Service, JDBCTemplate 개념 및 특징 본문

⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆/JDBC

JDBC - Connection, Statement, PreparedStatement, ResultSet, Service, JDBCTemplate 개념 및 특징

yeonee 여니 2023. 6. 20. 12:11
728x90
반응형
SMALL

안녕하세요.

https://blog.naver.com/sysysy0302 여니입니다 :)

 

* JDBC용 객체

* - Connection : DB의 연결정보를 담고 있는 객체(IP주소, PORT번호, 계정명, 비밀번호)

* - (Prepared)Statement : 해당 dbsql문을 전달하고 실행한 후 결과를 받아내는 객체

* - 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를 읽어들여서 반영시킬것 => 동적코딩방식

728x90
반응형
LIST