Oda kalıcılığı kitaplığı, SQLite kullanımına kıyasla çeşitli avantajlar sunar. Doğrudan API'ler:
- SQL sorgularının derleme zamanında doğrulanması
- Tekrar eden ve hataya açık ortak metinleri en aza indiren kullanışlı ek açıklamaları kod
- Sadeleştirilmiş veritabanı taşıma yolları
Uygulamanızda şu anda SQLite'ın oda dışı bir uygulaması kullanılıyorsa bu sayfayı okuyun başlıklı makaleyi inceleyin. Oda ilk odaysa Uygulamanızda kullandığınız SQLite uygulaması için Verileri yerel bir belleğe kaydetme veritabanını kullanarak oturum açın.
Taşıma adımları
SQLite uygulamanızı Odaya taşımak için aşağıdaki adımları uygulayın. Eğer SQLite uygulamanız büyük bir veritabanı veya karmaşık sorgular kullanıyorsa Odaya kademeli olarak geçmeyi tercih ediyorsanız. Artımlı taşıma başlıklı makaleyi inceleyin. artımlı geçiş stratejisi seçin.
Bağımlılıkları güncelleme
Uygulamanızda Oda kullanmak için uygun bağımlılıkları
uygulamanın build.gradle
dosyası. Aşağıdakiler için Kurulum bölümüne bakın:
en güncel Oda bağımlılıklarını
göreceksiniz.
Model sınıflarını veri varlıklarına güncelleme
Oda, şunları yapmak için veri varlıklarını kullanır: veritabanındaki tabloları temsil eder. Her varlık sınıfı bir tabloyu temsil eder ve bu tablodaki sütunları temsil eden alanlar içermelidir. Güncellemek için şu adımları uygulayın: Mevcut model sınıflarınızı Oda varlıkları olacak şekilde ayarlayın:
- Sınıf beyanına şununla not ekleyin:
Bunun bir olduğunu belirtmek için
@Entity
Oda varlığı. İsterseniztableName
özelliğini sonuçta elde edilen tablonun tıklayın. - Birincil anahtar alanına not ekleyin
@PrimaryKey
. - Sonuçta ortaya çıkan tablodaki sütunlardan herhangi birinin adı
alanın adından farklıysa, alana
@ColumnInfo
vename
mülkünü doğru sütun adını girin. - Sınıfta, veritabanında saklanmasını istemediğiniz alanlar varsa
bu alanlara
@Ignore
(Odanın oda olduğunu) belirtir ilgili tabloda onlar için sütun oluşturmamalıdır. - Sınıfta birden fazla kurucu yöntemi varsa hangi kurucuyu belirtin
Oda, diğer tüm kuruculara
@Ignore
ile not eklenerek kullanılmalıdır.
Kotlin
@Entity(tableName = "users") data class User( @PrimaryKey @ColumnInfo(name = "userid") val mId: String, @ColumnInfo(name = "username") val mUserName: String?, @ColumnInfo(name = "last_update") val mDate: Date?, )
Java
@Entity(tableName = "users") public class User { @PrimaryKey @ColumnInfo(name = "userid") private String mId; @ColumnInfo(name = "username") private String mUserName; @ColumnInfo(name = "last_update") private Date mDate; @Ignore public User(String userName) { mId = UUID.randomUUID().toString(); mUserName = userName; mDate = new Date(System.currentTimeMillis()); } public User(String id, String userName, Date date) { this.mId = id; this.mUserName = userName; this.mDate = date; } }
DAO'lar oluşturma
Oda, veritabanına erişen yöntemleri tanımlamak için veri erişimi nesnelerini (DAO'lar) kullanır. Odayı kullanarak verilere erişme DAO'lar: Mevcut sorgunuzu değiştirin farklı veri yönetimi yöntemleri mevcuttur.
Veritabanı sınıfı oluşturma
Room uygulamaları bir örneği yönetmek için veritabanı sınıfı kullanır:
Veritabanı sınıfınızın
RoomDatabase
ve tümüne referans ver
sayısını ve DAO'larınızı ekleyebilirsiniz.
Kotlin
@Database(entities = [User::class], version = 2) @TypeConverters(DateConverter::class) abstract class UsersDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
Java
@Database(entities = {User.class}, version = 2) @TypeConverters(DateConverter.class) public abstract class UsersDatabase extends RoomDatabase { public abstract UserDao userDao(); }
Taşıma yolu tanımlama
Veritabanı sürüm numarası değiştiğinden,
Migration
nesne
Odanın veritabanındaki mevcut verileri saklaması için bir taşıma yolu belirtmeniz gerekir.
Veritabanı şeması değişmediği sürece bu değer boş olabilir
hakkında bilgi edindiniz.
Kotlin
val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { // Empty implementation, because the schema isn't changing. } }
Java
static final Migration MIGRATION_1_2 = new Migration(1, 2) { @Override public void migrate(SupportSQLiteDatabase database) { // Empty implementation, because the schema isn't changing. } };
Oda'daki veritabanı taşıma yolları hakkında daha fazla bilgi edinmek için veritabanı ile doğrulayın.
Veritabanı örneklendirmesini güncelleme
Bir veritabanı sınıfı ve taşıma yolu tanımladıktan sonra, şunları kullanabilirsiniz:
Room.databaseBuilder
veri tabanınızın taşıma yolunun uygulandığı bir örneğini oluşturun:
Kotlin
val db = Room.databaseBuilder( applicationContext, AppDatabase::class.java, "database-name" ) .addMigrations(MIGRATION_1_2).build()
Java
db = Room.databaseBuilder( context.getApplicationContext(), UsersDatabase.class, "database-name" ) .addMigrations(MIGRATION_1_2).build();
Uygulamanızı test etme
Yeni Oda uygulamanızı test ettiğinizden emin olun:
- Test bölümündeki talimatları uygulayın taşıma işlemlerinin test edilmesi yardımcı olur.
- Test sürecinizi veritabanını DAO'nuzu test etmek için yöntemlerine göz atın.
Artımlı taşıma
Uygulamanız büyük ve karmaşık bir veritabanı kullanıyorsa bu veritabanının taşınması mümkün olmayabilir
uygulamanızı Odaya yükleyebilirsiniz. Bunun yerine verileri isteğe bağlı olarak
varlıkları ve Oda veritabanını bulun ve ardından sorgu yöntemlerinizi taşıyın.
DAO'lara aktaracağım. Bunu yapmak için özel veritabanı yardımcınızı
sınıfını
SupportSQLiteOpenHelper
aldığınız nesne
RoomDatabase.getOpenHelper()
.
Ek kaynaklar
SQLite'tan Room'a taşıma hakkında daha fazla bilgi için aşağıdaki ek kaynaklar: