프로그래밍

[Flutter] NoSQL 라이브러리 - Isar 사용법 정리

열정 엔지니어 2023. 11. 20. 16:09

패키지 설치(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
반응형