패키지 설치(Add dependancy)
- dependencies:
isar:
isar_flutter_libs:
path_provider: - dev_dependencies:
isar_generator:
build_runner:
path_provider는 db를 저장할 경로를 구하는데 사용되니까 설치해주자.
모델 작성
- isar.dart를 import 해준다.
- part '객체명.g.dart' 도 import 해준다. 나중에 build_runner 명령어를 실행시키면 해당 파일이 생성되니까 일단 임포트한다.
- 원하는 모델의 클래스를 생성한다. class 위세 @collection이라는 어노테이션을 붙여준다. Isar에서 저장하는 객체로 인식시켜준다.
- 다른 모델을 사용하고 싶을땐 IsarLink<모델명>을 이용한다.
서비스 코드 작성
- DBHelper 클래스를 작성해준다.
- 클래스 생성자에서는 Isar 인스턴스 객체가 있는지 확인한 후 없으면 지정경로에서 위에서 만들어둔 모델의 스키마를 활용해 db를 생성한다. open() 함수의 첫번째 인자로 전달하는 배열에 원하는만큼 스키마를 넣을 수 있어 편리하다.
- db를 연 다음에는 필요한 CRUD에 대한 함수를 만든다.
- 먼저 db 인스턴스값을 가져오고, 비동기 혹은 동기 작업을 하는데, Isar 3.0 버전에서는 'writeTxn'이라는 함수를 사용한다. Txn은 트랜잭션의 줄임말이고, 이 함수 안에 원하는 동작을 async 함수 형태로 전달해준다.
- CRUD에 따라 쿼리문을 만들어서 쓰기도 하고 스키마에 직접 함수를 호출해서 사용하기도 하니 홈페이지 문서를 참조한다.
개인적으로 느끼는 Isar가 갖는 장점
- Hive 대비 모델 작성이 쉽고 간편하다.
- 모델별로 db를 open하는게 아니라 하나의 데이터베이스를 오픈할때 원하는 만큼 스키마 적용이 가능하다.
- NoSQL이지만 SQL처럼 쿼리문을 작성할 수 있어 데이터 조작이나 필터링이 쉽다. (직접 복잡한 함수를 작성할 필요 없다.)
- Database inspector가 있어 db 내부를 살펴볼 수 있다. <-- 이게 최고 장점인듯. 단순히 살펴보는것 뿐 아니라 삭제나 json 형태로 복사도 가능하다.
- 문서화가 잘 되어 있다.
https://isar.dev/tutorials/quickstart.html
반응형
'프로그래밍' 카테고리의 다른 글
[CSS] 플렉스 (Flex) 컨테이너 (1) | 2024.01.03 |
---|---|
[Python] GUI 프로그래밍 - Miles to kilometers 변환기 (1) | 2023.12.20 |
[Flutter] SliverPersistentHeaderDelegate 소개 (0) | 2023.09.01 |
NSManagedObject에 대한 설명 (0) | 2023.08.29 |
NSPersistentContainer 에 대한 설명 (0) | 2023.08.29 |