설정
ㆍ종속성 설정
1 2 3 4 | dependencies { implementation "androidx.room:room-runtime:2.1.0-alpha07" annotationProcessor "androidx.room:room-compiler:2.1.0-alpha07" // For Kotlin use kapt instead of annotationProcessor } | cs |
구성요소
User.java
ㆍEntity 생성
1 2 3 4 5 6 7 8 9 10 11 | @Entity public class User { @PrimaryKey public int uid; @ColumnInfo(name = "first_name") public String firstName; @ColumnInfo(name = "last_name") public String lastName; } | cs |
UserDao.java
ㆍDao 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Dao public interface UserDao { @Query("SELECT * FROM user") List<User> getAll(); @Query("SELECT * FROM user WHERE uid IN (:userIds)") List<User> loadAllByIds(int[] userIds); @Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1") User findByName(String first, String last); @Insert void insertAll(User... users); @Delete void delete(User user); } | cs |
AppDatabase.java
ㆍRoomDatabase 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); private static AppDatabase INSTANCE; static final Migration MIGRATION_1_2 = new Migration(1, 2) { @Override public void migrate(SupportSQLiteDatabase database) { // Since we didn't alter the table, there's nothing else to do here. } }; public static AppDatabase getInstance(Context context) { if (INSTANCE == null) { INSTANCE = buildDatabase(context); } return INSTANCE; } private static AppDatabase buildDatabase(Context context) { return Room.databaseBuilder(context, AppDatabase.class, "database-name.db") .addMigrations(MIGRATION_1_2) .build(); } } | cs |
출처
https://developer.android.com/training/data-storage/room/index.html