web-dev-qa-db-ja.com

Android DAO全体の会議室トランザクション

公式文書には次のように記載されています:

It is recommended to have multiple Dao classes in your codebase depending on the tables they touch.

そして、そのようなTransactionアノテーションでメソッドをマークすることができます:

 @Dao
 public abstract class ProductDao {
    @Insert
     public abstract void insert(Product product);
    @Delete
     public abstract void delete(Product product);
    @Transaction
     public void insertAndDeleteInTransaction(Product newProduct, Product oldProduct) {
         // Anything inside this method runs in a single transaction.
         insert(newProduct);
         delete(oldProduct);
     }
 }

しかし、トランザクションが複数のDAOにまたがる場合はどうでしょうか?トランザクションをサポートするためだけにすべてのDAOを1つにマージする必要がありますか、それともより良い方法がありますか?

25
Alessandro

RoomDatabase.runInTransaction(...) を使用できます

何かのようなもの:

database.runInTransaction(new Runnable(){
  @Override
  public void run(){
    Access all your daos here
  }
});
27
Martin Ohlin