4_JDBC_(Service, Template)
@ 알트 + 쉬프트 + j // 메소드 주석
@ (String에서) . toUpperCase() // 대문자 변경
@ static import
-> static 필드 또는 메소드를 한 클래스에서 지속적으로 호출해야 되는 경우, 해당 static 호출에
필요한 클래스명을 생략할 수 있게 해주는 기능
Service 클래스
- Service는 데이터에 대한 비지니스 로직(가공) 수행 및 DB와의 연결정보를 가지고 있는 Connection 객체를
생성하고 여러 DAO를 호출하여 하나의 요청에 대한 여러번의 DB접근/갱신을 진행하며
그것을 하나의 트랜잭션으로 묶어 처리하는 클래스
-Service 클래스에서 메소드 작성하는 방법
1) Controller에서 데이터를 전달 받음(매개변수)
2) Connection 객체 생성
3) DAO 객체 생성
4) Connection 객체와 controller에서 전달받은 데이터를
알맞은 DAO 메소드로 전달(호출)
5) DAO 수행 결과를 가지고 필요시 데이터 가공 및 트랜젝션 처리 진행
★Template 클래스
- 기존 DB 처리 작업 시 마다 새로운 Connection 객체를 생성하여 DB 연결을 진행함.
이렇게 하면 한 사용자가 여러 개의 커넥션을 생성하게됨
--> 메모리 낭비 증가, 객체 생성 소멸에 따른 시간 소비
이를 해결하기 위해서 프로그램 전체에서 생성할 수 있는 Connection 객체를 한개로 제한
-> 메모리 낭비 및 DB연결 객체 수 오버를 방지
(싱글톤패턴
- 프로그램 구동 시 메모리에 객체를 단 하나만 기록되게 하는 디자인 패턴
- 한 클래스의 모든 필드,메소드를 static으로 선언하여 static 영역에 자체에 해당 클래스
객체를 만드는 형태 작성)
- 이전 프로젝트에서 Connection 생성 과정
JDBC 드라이버 로드
DB 연결을 위한 정보(url, id, pwd)
이러한 내용들을 직접 작성함. (정적코딩)
-> 추후 DB 정보가 변경되는 경우
코드 자체를 수정해서 다시 컴파일, 배포해야함.
-> 유지보수 불편
이를 해결하기 위해 Properties 파일을 사용
프로그램 실행 시 동적으로 Properties 파일에서
DB 연결 정보를 읽어오도록 코딩. (동적코딩)