생각보다 해야할게 너무 많음...
자바
- 객체지향의 특징
- 객체지향 5대원칙 SOLID
- 람다, 익명클래스
- 프로퍼티스랑 스트림
DB
- DB와 연결하기 까지의 과정
- 그것에 사용되는 클래스 및 용도
- DAO, DTO 의 개념에 대해 정확히 알기
- 조인 종류랑 사용법
수업내용
- 로또, 달력, 숫자야구 프로그램 이해하고 주석달기
- 정보처리기사 프로그램 파일, DB 다시 풀어보기
- 정보처리기사 프로그램 파일, DB 이해하고 주석달기
- 게시판 프로그램 객체지향에 맞게 분리된거 이해하고 주석달기
필기 백업...
[지금까지 진행한 프로그램]
로또 프로그램 - 3개의 클래스 - 객체들간의 관계
달력 프로그램 - 2개의 클래스 - 코어클래스 서비스클래스
숫자야구 프로그램 - 3개의 클래스 - 헬퍼클래스
정보처리기사(파일)- 4개의 클래스 -> 실행 / 데이터 / 로직
정보처리기사(DB) - 6개의 클래스 -> 파일 + 2개(ConnectionManager + DAO)
게시판 프로그램 - 5개의 클래스
see - know - understanding - practice - doing
프로젝트 퀄리티는 상향 개발자 능력은 하향
-> 등장한게 프레임워크
: 기본적인 기능들을 다 만들어놓고 필요한것만 빼서 사용하자(관제 시스템)
[기사 퀴즈로 객체지향 예시] - 객체지향 오원칙 중 단일 책임 원칙!
Test Center
- 여기서는 실행만 함
- main문 존제
- 따로 문제풀이 로직이 돌아가는 메소드가 있고 그걸 불러서 사용
- 언제든지 다른 메소드 불러서 사용가능함
GisaQuiz
- 실질적인 동작이 일어나는 클래스
- DB랑 함께 사용할때 로직을 짜서 변수로 DAO에게 넘겨줌
- main에서 여기있는 메소드를 불러 사용
DAO
- DB랑 연결(연결만 전담하는 ConnectionManager 클래스 따로 분리 가능
- DB에 있는 내용 업데이트(DB CRUD는 여기서 일어남)
- 로직 자체는 GisaQuiz에 있지만 실질적으로 DB에 작용하는 클래스는 DAO
- DB와만 연결하고 DB에 처리해야할 내용 담당
통상적으로 문제해결을 위한 절차 : 받은 Data를 기반으로 DB에서 데이터 들고옴
중간에 문제가 생겼을 경우 비즈니스 쪽에서 예외 처리
- 원래라면 쿼리는 비즈니스 로직에 있어야 하는데 쿼리문은 중간 결과 값(완전하게 처리되지 않고 단순히 데이터를 들고오기만 한 것)이라 최종결과 처리를 하는 비즈니스쪽에 두는 것 보다는 DAO에 두는 경우가 많다
- 기본적으로 이미 있는 메뉴 내용(고정된 쿼리)는 DAO에, 고정된 쿼리가 아닌 새로운 쿼리는 비즈니스 로직에
- 결론적으로 이론상으로는 쿼리를 비즈니스 쪽에 두는게 맞지만 대부분은 DAO에 쿼리가 있음
비즈니스 모델에는 DB용어를 쓰면 안됨
ex) delete -> remove, select -> read
java bin : object라는 뜻(스프링에 보면 bins라는 말이 나오는데 전부 오브젝트라는 뜻)
데이터를 담당하는 오브젝트 : 데이터빈
로직 처리하는 오브젝트 : 액션빈(jsp에서 로직을 처리하는 태그가 액션태그인 이유)
PreparedStatement 사용 이유
첫번째 이유 : 1000개의 행을 넣어야 해도 쿼리문은 하나로 고정되어 있기 때문에 1개만 사용가능함
두번째 이유 : 오브젝트로 저장이 가능하기 때문
세번째 이유 : +나 append를 사용할 경우 에러가 날 가능성이 높음, 많은 데이터를 집어넣을때 사용이 용이
batch 기능
- 한꺼번에 모아서 DB에 입력
- 만약에 1000개의 데이터가 입력되지 않는다면 에러처리를 해야한다(트랜잭션)
상속
- 상위클래스를 상속받은 하위클래스에서는 무조건 상위클래스의 생성자나 슈퍼를 우선적으로 선언해야 한다
- 상위 클래스의 필드에 있는 값들을 사용하려면 무조건 먼저 상위클래스를 불러야 함
- 타입 변수이름 = new 객체(); -> 생성자
책 얼른 받았음 좋겠다... 나도 자바 이론 공부좀 해볼래...
(디스코드에 공부해야할 내용 정리되어있음 확인하기)
(내일은 객체지향 5대원칙 블로그에다 정리해보기)