Room là thư viện persistence (ORM) của Jetpack bọc quanh SQLite, giảm boilerplate và bắt lỗi sớm.
Ba thành phần:
- Entity: class ánh xạ thành bảng.
- DAO: interface khai báo truy vấn (@Query, @Insert, @Update, @Delete).
- Database: lớp trừu tượng chứa DAO và giữ kết nối.
Vì sao hơn SQLite thuần:
- Kiểm tra SQL tại compile-time (sai câu query báo lỗi lúc build, không phải runtime).
- Tự ánh xạ kết quả sang object, ít code lặp.
- Tích hợp Flow/LiveData → truy vấn phát lại tự động khi dữ liệu đổi, hợp offline-first.
- Hỗ trợ migration có kiểm soát.
Hay hỏi: vì sao không được chạy query trên main thread (Room ép chạy nền hoặc trả về Flow/suspend).