본문 바로가기

국비 교육

(42)
2020.11.17 일자 수업 : Business Layer 실습 - Business Layer 분리 현재 Command에서 UI처리 작업과, 업무 로직 처리 작업(업무에 필요한 데이터 처리를 수행하는 응용프로그램의 일부)을 모두 수행하고 있다. 따라서 이것을 high-cohesion을 실현하기 위해 이 비즈니스 로직 역할을 Service 객체에게 위임하고, Command는 UI처리만 할 것이다. 따라서 Command와 Prompt 는 UI에 관한 로직으로 presentation Layer에 속하고 우리가 이번 프로젝트가 새로 생성할 Service 객체들은 Business Layer에 속한다. 반면, DAO/MyBatis/DBMS는 Peresistence Layer에 속한다. 즉, 우리의 프로젝트는 다음과 같이 나눠진다. presenatation Layer : 사..
2020.11.16 일자 수업 : 트랜잭션 관리 실습 - 트랜잭션 관리 ProjectDeleteCommand에서는 먼저 작업 테이블에서 다음과 같은 과정으로 세 가지 테이블에서 데이터를 삭제한다. TaskDao.deleteByProjectNo() 이 프로젝트에 대한 작업을 담당하는 팀원이 있는 경우, 이 팀원 정보들을 모두 삭제(TaskDao.deleteByProjectNo) ProjectDao.delete() 프로젝트와 멤버의 관계 테이블에서 해당 프로젝트의 팀원 데이터를 모두 삭제(ProjectDao.deleteMembers) 해당 프로젝트에 대한 데이터를 삭제(ProjectDao.delete) 그런데 문제는 이 두 메서드가 SQL문을 실행하기 위한 SQLSession 객체가 각각 다르다는 점이다. 따라서 두 메서드의 삭제 작업이 모두 완료된 시점..
2020.11.13 일자 수업 : DB 모델링 DB 모델링 git/eomcs-docs/db/dbmodeling.md DB 모델링 모델링(modelling)이란 생각하는 바(개념)를 글과 그림으로 표현하는 것을 말한다. (렌더링 : 명령어를 해석하여 화면에 출력하는 것) DB 모델링이란 데이터 베이스를 관리할 때, 데이터가 중복되지 않도록 테이블을 구조화하기 위해 데이터를 분석하고 구조화하여 데이터 속성과 관계를 글과 그림으로 표현한 것이다. 이 과정을 통해 중복 데이터를 제거하여 데이터의 안정성, 신뢰성을 높이고, 무결성을 유지할 수 있다. DB 모델링을 할 때 사용되는 주요 용어는 다음과 같다. table = relation = entity = file : 테이블 intension = schema = header : 데이터 구조 설계도 extens..
2020.11.9 일자 수업 : Chain of Responsibility, MyBatis, Persistence Framework 실습 - Chain of Responsibility CommandFilterManager의 내부적인 작동 구조를 LinkedList와 비슷하게 할 수도 있다. CommandFilterManager는 LinkedList가 Node를 관리하듯이 firstChain과 lastChain을 갖는다. Chain은 LinkedList의 Node와 같다. Chain은 수행할 작업을 담은 filter와 다음 Chain을 가리키는 nextChain을 갖는다. 어떤 Chain에 대해서 doFilter를 호출하면 해당 Chain 안에 담긴 filter에 대해서 doFilter를 호출한다. 그리고 각 Filter는 doFilter 메서드 몸체에서 작업을 수행한 후 두 번째 파라미터로 받은 nextChain에 대하여 doFilt..
2020.11.5 일자 수업 : DAO interface, 커넥션 객체 공유, 로그인 실습 - DAO Interface MariaDB를 사용하는 dao.mariadb 패키지와 Oracle을 사용하는 dao.oracle 패키지를 만들었다고 가정할 때, 기존에 사용하고 있는 패키지 클래스에서 다른 패키지의 클래스들로 사용 DAO를 변경할 때마다 DAO를 사용하는 코드를 모두 수정해야 한다. 이 불편함을 해소하기 위해 DAO 클래스에 대한 사용 규칙, 즉 인터페이스를 정의하여 클래스 대신 인터페이스를 사용하도록 한다. 일단, mariaDB를 사용하고 있는 DAO 클래스는 com.eomcs.pms.dao.mariaDB에 모두 집어넣고, com.eomcs.pms.dao 패키지에는 DAO 인터페이스를 집어넣을 것이다. 일단 BoardDao를 인터페이스로 바꾸어 com.eomcs.pms.dao에 넣어..
2020.11.2 일자 수업 : 관계 테이블 만들기, 무결성 DBMS의 SQL문 실행과정 SQL 구분 분석(Parsing) 문법의 유효성 검사(Syntax Check) : 문법의 규칙을 준수하는지 검사한다. 예) select form pms_board-> form은 잘못된 SQL 문법이다. SQL 문의 의미 검사(Semantic Check) : SQL 문에서 지정하는 컬럼이나 테이블, 뷰 등이 유효한지 검사한다. 예) select from pms_okok -> pms_okok 테이블이 없다면, semantic 오류이다. SQL 공유 풀 검사(Shared Pool Check) : 공유 풀은 SQL 문에 대해 생성된 실행 계획(execution plan)등을 보관한다. 공유 풀에 저장된 값 중에서 SQL ID와 일치하는 값이 있는지 조사한다. 일치하는 값이 없으면 해..
2020.10.29 일자 수업 : JDBC, JDBC Driver JDBC JDBC 와 JDBC Driver의 관계 JDBC implements MariaDB JDBC Driver Driver | // ..|............................|............................|-> new Connection() // ..|............................|..........return............| // ..|........return..............|0 이렇게 되면, DBMS는 board_id 값이 0보다 큰, 모든 레코드를 삭제하는 것이다. 또 다른 사례로는, 데이터를 변경하는 예제에서도 사용자가 다음과 같이 입력할 수도 있다. 번호? 12 제목? zzz 내용? haha', view_count=1..
2020.10.26일자 수업 : stateless logIn 기능 구현, SQL문법 stateless 통신에서 LogIn/Out git/eomcs-java-basic/src/main/java com.eomcs.net.stateful 클라이언트가 여러번 작업을 요청했을 때, 이전에 요청했던 작업을 수행하는 과정에서 발생한 정보를 토대로 작업을 수행하기 위해서는 그 정보를 서버 혹은 클라이언트 어딘가에 기록해야 한다. stateful 방식에서는 한번 연결되면, 연결이 끊어지기 전까지 저장한 정보를 유지하는 것이 용이하다. 그러나 stateless는 한번의 요청과 응답마다 연결이 끊어지기 때문에 정보를 유지하는 것이 까다롭다. 예를 들어보자. 계산기 서비스를 stateful 방식으로 제공하는 서버가 있다. 클라이언트에게서 기존 계산 결과에서 원하는 계산을 여러번 수행하기 위해 계산 결과를 그..