* DAO (Data Access Object) 도입
* 현황
저장소를 변경하려면 데이터 조작 방식이 바뀐다.
즉, 저장소 변경에 따라서 파일 I/O 방식이 바뀌며, 코드를 변경해주어야 한다는 뜻이다.
모든 Listener 클래스를 변경해야한다. (유지보수 비용이 많이 발생한다.)
* 개선
MemberDao 에서 데이터 파일 I/O , 데이터 조작 등의 기능을 수행하게 함으로써
데이터 처리 방식을 캡슐화하고 유지보수성을 향상시킨다.
두 개의 클래스에서 각각 처리하던 작업을 하나의 클래스로 통합하고,
캡슐화함으로써 유지보수가 용이해진다.
* DAO 만들기
1.
변경 전 예시)
변경 후 예시)
3.
상속 후에 인터페이스를 적용한다면,
Dao 클래스를 각각 새로 정의해주어야한다.
4.
Member***Dao 등의 클래스들은 각각 동일한 인터페이스 MemberDao 를 사용한다.
MemberDao.java
MemberListDao.java
* 37. 네트워킹을 통한 데이터 공유
① 데이터 파일이 로컬에 저장된다면 App간에 데이터를 공유할 수 없다 !
② 데이터 파일을 별도의 컴퓨터에 분리하고 공유한다면 ?
동시에 같은 App파일을 편집하다 보면 파일의 데이터가 깨질 수 있다.
③ 데이터 관리 기능을 별도의 App으로 분리하여 App이 직접 데이터파일에 접근하는 것을 막는다.
원격컴퓨터의 App이 데이터 등록/조회/변경/삭제 등을 관리한다.
데이터 요청 처리를 받은 후에 데이터 파일이 변경되므로 동시에 접근해서 발생되는 문제를 피할 수 있다.
* S/W Architecture : client/server Architecture
* 소켓연결
* IP와 port 번호
서버실행)
전송)
두가지 방법 !
* TCP 3-way HandShaking 역할
* Server/Client App 구동시켜보기
먼저 vs코드로 (편의상 선택)
App이 모여있는 프로젝트 폴더에서..
1. Setting.gradle 수정
ServerApp 이 있는 프로젝트 폴더에서..
2. build.gradle 수정
ServerApp 이 있는 프로젝트 폴더에서..
3. build.gradle 수정
상단에 Run 옆에 '▼' 버튼 클릭
4. Run Configurations... 클릭
5. Arguments 에서 Server는 '8888' 포트 번호 입력
6. Arguments 에서 Client는 '8888' 포트 번호 입력
7. 하단에 Display Select Console 버튼을 눌러서 App을 전환하면서 화면 확인