2021.11.25(목)
💻 PreparedStatement 실습
- MEMBER 관리 프로그램 계속/마무리(수업 시간에도 직접 해보고, 강사님과 확인)
🌿 Template 클래스
- JDBC 과정/수업 중 반복적으로 쓰이는 구문들, 특히 DAO 클래스 메서드들의 공통적인 부분을 각각의 메소드로 정의해둘 곳
- 재사용할 목적으로 공통 템플릿(template) 작업 진행
- 이 클래스에서의 모든 메소드들은 다 static 메소드로 만듦 = 싱글톤(Singleton) 패턴 = 프로그램 실행과 동시에 메모리 영역에 단 1번만 올라간/올려놓은 것을 재사용한 개념
- 객체 사용 시 새로운 객체를 계속 생성해서 사용(x) 객체 하나만으로/하나의 객체만 생성해 어디에서든지 가져다 쓸 수 있는 개념; 공유 + 재사용(o)
e.g. Math클래스는 모든 필드와 메소드(의 접근제한자)가 static으로 되어있음 → static 메모리 = 프로그램 시작~끝 사용 가능; 메모리에 항상 올라와있음 → 언제든지, 객체 생성(heap 메모리 영역에 올림) 없이, 사용 가능/객체 생성할 필요 없음 = 굳이 생성자 필요 없음 = design patterns 중의 하나인 Singleton pattern
✔️ static 메모리영역에 있는 것들은 객체 생성 안 해도 사용 가능
public static Connection getConnection()
= DB와 접속된 Connection 객체를 생성해서 반환시켜주는 메소드public static void close(Connection conn/Statement stmt/ResultSet rset)
= 전달받은 JDBC용 객체를 각 객체별로 반납시켜주는 메소드
메서드 오버로딩 + (Prepared)Statement 인자 전달 시 다형성 적용
public static void commit/rollback(Connection conn)
= 전달받은 Connection 객체를 가지고 트랜잭션 처리를 해주는 메소드
🌿 Service 클래스
- 기존의 Dao 클래스의 역할 분담
- Controller와 Dao 사이의 역할 = Controller에서 Service 호출(Connection 객체 생성) 후, Service를 거쳐서 Dao로 넘어감
- '연결'하고 Connection 관련 역할 담당
- Dao 호출 시 Connection 객체 + 기존에 Controller에서 Dao로 넘기고자 했던 매개변수를 같이 넘겨줌 → DML구문의 경우, Dao 처리가 끝나면 Dao 결과에 따른 트랜잭션 처리도 Service단에서 같이 해줌
- Service단을 추가함으로써 Dao에는 순수하게 SQL문을 처리하는 부분만 남음
📗 homework: Statement 사용한 JDBC 프로그램 (다시) 만들어보기
JDBC 시험 = 서술형 8문제(DBMS/Oracle 필기/교재 내용) + 문제해결 시나리오 4문제(JDBC 순서에 따라 무엇을 해줘야 하는지 등 모두 이해하고 (Prepared)Statement codes 각각 5번씩 + Template 3번씩 직접 써봐야 함)
🔍 문제해결 시나리오 문제 exemple =
conn.prepareStatement(sql);
로 쓰면 무엇이 + 왜 작동이 안 되는가?
- 문제점 = PreparedStatement 객체가 null이기 때문에 미완성 상태의 SQL문 완성시킬 때 등 null point exception 발생
- 사유 = PreparedStatement 객체를 변수에 담지 않았기 때문에
- 해결방법 = 윗줄 코드를pstmt = conn.prepareStatement(sql);
와 같이 수정
'back-end dev > JDBC' 카테고리의 다른 글
[KH정보교육원] 35일차_Properties, 조별 실습 (0) | 2021.11.30 |
---|---|
[KH정보교육원] 34일차_Template, Service 실습 마무리 (0) | 2021.11.26 |
[KH정보교육원] 32일차_Statement 실습 계속, PreparedStatement (0) | 2021.11.24 |
[KH정보교육원] 31일차_JDBC MVC 및 Statement 실습 (0) | 2021.11.24 |
[KH정보교육원] 30일차_JDBC 소개 (2) | 2021.11.22 |