JDBC를 이용하여 DAO클래스로 분리하여 MVC모델로 구현하기 진행중


현재는 클라이언트에서 바로 DB서버쪽으로 접속하지만

실제 개발시에는 그런 경우는 거의없고 중간에 서버가 중계해주는 3티어 구조로 되어있다.

클라이언트 < - > 서버 < - > DB서버  (3티어)



DAO를 통해서 다양한 검색 메서드를 구현

--------------- 오전끝


커넥션 풀(Connection Pool)사용하기

티어3 구조

클라이언트 < - 클라이언트 요청 - > 서버 < - Connection 요청 -> DB서버


Connection Pool 이란 요청 시점에 Connection을 연결하는것이 아니라 미리 일정수의 Connection을 만들어놓고 필요한 애플리케이션에 전달하여 이용하도록 하는 풀링방법이다.


Connection pool 에는 기본수, 최대후, 필요시 자동으로 증가하는수 등을 관리할 수 있다.


디자인 패턴 - https://ko.wikipedia.org/wiki/%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4


싱글톤 패턴 - 하나의 객체만 생성한후에 모든 클라이언트가 공유하도록 하는 디자인 패턴

 - 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어진다.

 - 어디서든지 그 인스턴스에 접근할 수 있도록 한다.

 - 클래스에서 자신의 단 하나 뿐인 인스턴스를 관리하도록 만들면 된다.


생성자의 접근제한자가 private이다 -> NEW를 못하게해준다.

그래서 클래스를 생성해주는 팩토리 메서드를 만든다.


ApacheDataSource를 사용시엔 미리 구현해놓은


BasicDataSource를 통해서 구현한다.


- DataBase 연동 애플리케이션 개발

DAO란? - 애플리케이션을 다루는 영속성 데이터(DB, FIle...)들을 저장하거나 조회, 조작 하는 기능을 전담하도록 만드는 객체를 말한다. 엔터프라이즈(서버) 애플리케이션의 경우 어떤 방법으로든 DBMS와 연결되서 동작한다. 애플리케이션에서 DB 연동 시 DAO 디자인 패턴을 적용하여 영속성 데이터 엑세스 로직을 담은 클래스를 캡슐화하여 작성하여야 한다.


DAO 디자인 패턴 - 영속성 처리를 위한 다양한 데이터 엑세스 기술(JDBC, JDO, JPA IBatis....)들을 인터페이스를 통해 외부에 노출되지 않도록 설계하는 디자인 패턴

영속성 데이터 엑세스 코드를 변경하더라도 DOA를 사용하는 객체 코드에 전혀 영향을 주지않으며, 일관됨 메소드 호출이 가능해야한다.


1단계 가장 간단한 DAO 클래스 구성




'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

9월 2주차 1일(10주)  (0) 2015.09.07
9월 2주차 5일 (9주)  (0) 2015.09.04
9월 1주차 3일 (9주)  (0) 2015.09.02
9월 1주차 2일 (9주)  (0) 2015.09.02
9월 1주차 1일 (9주)  (0) 2015.08.31
Posted by moyaiori
,

JDBC 활용


자바 APP에서 관계형 데이터 베이스 시스템(RDBMS)에 연결하여 SQL문을 실행하고, 실행 결과를 받아 쉽고, 유연하게 처리할 수 있도록 도와주는 표준 API이다.

= > DB연동을 위한 인터페이스들과 클래스들의 집합(클래스 라이브러리)


JDBC가 있기전까지는 직접 연결하여 프로토콜이 약 4천개를 구성해야했는대 이것이 편리해졋다.


JDBC Driver 다운로드를 굳이 하지않아도 설치시 생긴다.


이클립스 내부적으로 오라클 JAVA를 사용할수있도록 추가한다.


ResultSet의 구조는

BOF(Before Of File) -> 결과값 -> EOF(End of File) 순서이다.


커서가 BOF부터 시작된다. 

NEXT 할때마다 다음값으로 넘어간다

NEXT는 Bool값이다.

값이없을경우 false를 반환


오라클 드라이버는 오토커밋이 기본설정이다.


그래서 따로 트랜잭션 메서드가 따로 있다.



PreparedStatement 활용

기존의 쿼리문을 동적으로 보낼시 효율이 떨어진다 (쿼리문전체를 보낼때마다 컴파일 해주기떄문에)


서버쪽 부하를 줄이기위해 클라이언트에서 미리 선처리를 해주고 데이터를 보낸다.

칼럼명 = ?

?는 밑에서 set 메서드를 활용하여 값을 넣어준다.

?(바인딩 변수) 라고 부른다.


굳이 변수가 없더라고 PreparedStatement를 쓰는걸 권장












'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

9월 2주차 5일 (9주)  (0) 2015.09.04
9월 2주차 4일 (9주)  (0) 2015.09.03
9월 1주차 2일 (9주)  (0) 2015.09.02
9월 1주차 1일 (9주)  (0) 2015.08.31
8월 4주차 5일 (8주)  (0) 2015.08.28
Posted by moyaiori
,

데이터 베이스 설계


논리적, 물리적 설계 실습


'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

9월 2주차 4일 (9주)  (0) 2015.09.03
9월 1주차 3일 (9주)  (0) 2015.09.02
9월 1주차 1일 (9주)  (0) 2015.08.31
8월 4주차 5일 (8주)  (0) 2015.08.28
8월 4주차 4일 (8주)  (0) 2015.08.27
Posted by moyaiori
,