Hive는 Flutter에서 로컬 데이터베이스를 사용하는 인기 있는 패키지입니다.
NoSQL 데이터베이스로서 키-값 쌍 저장, 객체 저장, 쿼리 등 다양한 기능을 제공합니다.
SQLite보다 가볍고 빠르며, Thread-safe 특성을 가지고 있어 여러 스레드에서 안전하게 사용할 수 있습니다.
1. Hive 패키지 설치
Hive 패키지를 사용하려면 먼저 pubspec.yaml 파일에 다음 종속성을 추가해야 합니다.
dependencies:
hive: ^2.2.3
hive_flutter: ^1.1.0
또한 객체를 저장하려는 경우 build_runner 및 hive_generator 패키지를 dev_dependencies 에 추가해야 합니다.
dev_dependencies:
build_runner: ^2.4.7
hive_generator: ^2.0.1
2. 모델 정의
먼저, Hive에 저장할 객체를 나타내는 모델 클래스를 정의해야 합니다. 예를 들어, 사용자 정보를 저장하는 모델 클래스는 다음과 같이 정의할 수 있습니다.
class User {
final String name;
final int age;
User({required this.name, required this.age});
}
3. Hive 초기화
Hive를 사용하기 전에 앱의 main() 함수에서 Hive를 초기화해야 합니다.
import 'package:hive_flutter/hive_flutter.dart';
void main() async {
await Hive.initFlutter();
// ... 나머지 앱 코드
}
4. Hive Box 열기
모델 클래스를 기반으로 Hive Box를 열어 데이터를 저장하고 불러올 수 있습니다.
import 'package:hive_flutter/hive_flutter.dart';
Box<User> userBox = await Hive.openBox('userBox');
5. 데이터 생성
저장할 데이터를 생성합니다.
User newUser = User(name: 'John Doe', age: 30);
6. Create (생성)
새로운 데이터를 Hive Box에 저장합니다.
userBox.put('user1', newUser);
7. Read (읽기)
Hive Box에서 데이터를 읽습니다.
User? existingUser = userBox.get('user1');
if (existingUser != null) {
print(existingUser.name);
print(existingUser.age);
} else {
print('사용자를 찾을 수 없습니다.');
}
8. Update (수정)
기존 데이터를 업데이트합니다.
existingUser!.age = 31;
userBox.put('user1', existingUser!);
9. Delete (삭제)
Hive Box에서 데이터를 삭제합니다.
userBox.delete('user1');
10. 전체 데이터 목록 가져오기
Hive Box에서 모든 데이터를 가져옵니다.
List<User> users = userBox.values.toList();
for (User user in users) {
print(user.name);
print(user.age);
}
11. 추가 팁
- Hive는 비동기 API를 사용하므로 모든 작업을 await 키워드와 함께 사용해야 합니다.
- Hive는 기본적으로 디바이스 내부 저장소에 데이터를 저장합니다. 데이터 암호화 또는 외부 저장소에 대한 지원은 별도의 패키지를 사용해야 합니다.
- Hive는 아직 개발 중이며 일부 변경 사항이 있을 수 있습니다. 최신 변경 사항은 Hive 문서를 참조하십시오.
이 코드는 Hive 패키지를 사용하여 플러터에서 CRUD 작업을 수행하는 기본적인 방법을 보여줍니다.
실제 앱에서는 더 복잡한 쿼리, 오류 처리 및 권한 관리를 고려해야 할 수 있습니다.
이 정보가 도움이 되었기를 바랍니다! 궁금한 점이 있으면 언제든지 질문해주세요.
'Flutter > Package' 카테고리의 다른 글
앱 권한 관리를 손쉽게 해주는 permission_handler 패키지 사용법 가이드 (0) | 2024.07.16 |
---|---|
Flutter에서 네이티브 스플래시 화면을 간편하게 구현하는 방법: flutter_native_splash 사용법 가이드 (0) | 2024.07.16 |
플러터에서 Easy Localization패키지 사용법 (0) | 2024.07.14 |
[GetX] 플러터에서 Get.dialog 사용법 및 옵션 완벽 가이드 (1) | 2024.07.14 |
[GetX] 플러터에서 GetX패키지를 사용한 알림 설정 상세 가이드 (0) | 2024.07.14 |