새로운 아키텍쳐나 신기술을 알려줌

 

 

 

안드로이드 패턴은 종류가 다양하다

기본적인 패턴은 MVC

MVC - 웹

MVP - 앱 - 프레젠테이션

MVVM - 데이터변경하면 자동으로 뷰에 데이터가 들어간다

MVVM + 레트로핏 + (스프링 5.0 리액티브 (톰캣이 아닌 네티서버))

톰캣 - 리퀘스트 - 쓰레드 생성(리퀘스트수만큼 생성) - 실행

네티 - 쓰레드를 하나로 프로미스를 이용해서 동시실행 (노드js가 사용한다)

쓰레드 여러개 - 컨텍스트 스위칭시 버퍼에 저장해서 순차 실행 

혹시 네티 공부한다면 네티서버가 왜 좋은지 분석

클라우드 서버도 리액티브 서버이다 (몽고DB)

조인하면 연관된 데이터 다뽑아냄

 

NOSQL (몽고DB)
- JSON을 사용한다
- 관계형 데이터베이스에서는 속성에 단일속성을 넣는데,
NOSQL (몽고DB) JSON이라서  속성에 오브젝트 또는 오브젝트 배열
- 처리속도가 빠르다
- SELECT 시 빠르다
- INSERT UPDATE DELETE 시 느리다
- 일관성이 깨진다
- 수정의 속도를 버리고 SELECT의 퍼포먼스를 올린다

 

은행은 신뢰성이 중요하기 때문에 관계형데이터베이스를 사용한다

 

참고

https://github.com/codingspecialist/Android-MVVM-AAC-V1

 

codingspecialist/Android-MVVM-AAC-V1

Contribute to codingspecialist/Android-MVVM-AAC-V1 development by creating an account on GitHub.

github.com

 

----

뷰모델 - 뷰 연결하기

 

뷰모델 만들기

 

옵저버로 구독하기

 

위 코드는 선언만 해놔서 오류가난다(DB에 연결하면 해결)

 

// 라이브데이터는 new해서 만드는게 아니다
// DB에 연결되어있으면 선언만 하면 되는데, 지금은 그게 안되기 때문
// LiveData는 함수가 getter만 있음
// MutableLiveData는 함수가 getter setter 둘 다 있음
// DB에 연결해서 쓸 때는 무조건 LiveData
// 레트로핏2 등을 사용할 때에는 MutableLiveData

 

데이터가 변경되면 옵저버가 관찰하고 있다가 뷰의 데이터를 변경한다

이까지로 프로젝트 하면된다

 

 

----------

VM뷰모델 - Repository - 레트로핏2 - 서버

--------------

DB에서 리파지토리로 받는 타입이 중요하다

레파지토리가
MutableLiveData (변하는데이터)
DB에서 다운받은 데이터를 연결시키면
Room이랑 연결된다

인서트 딜리트 등을 비동기 쓰레드 asynctask로 돌림

------------

예제 따라해보기

https://junghun0.github.io/2019/05/22/android-viewmodel/

 

[Android] LiveData + ViewModel 사용해보기 - Junghoon's Blog

Android Architecture Components - ViewModel

Junghun0.github.io

-----------

 

 

 

 

 

 

 

+ Recent posts