Android Room Persistence Library: Jaký je nejlepší způsob, jak implementovat mnoho mnoho vztahu?

hlasů
4

I používali Realm a já jsem v současné době zkušebně za účelem porovnání obou nástrojů.

Snažím se realizovat následující mnoho mnoho vztahu:

zadejte

Zde mé Entitytřídy:

Person:

@Entity(tableName = person)
public final class RoomPerson {

  @PrimaryKey
  public int id;

  public String name;

}

CatTřída:

@Entity(tableName = cat)
public final class RoomCat {

  @PrimaryKey
  public int id;

  public int age;

  public String name;

}

A PersonCattřída:

@Entity(tableName = person_cat, primaryKeys = { personId, catId },
    indices = { @Index(value = { catId }) },
    foreignKeys = { @ForeignKey(entity = RoomPerson.class, parentColumns = id, childColumns = personId),
        @ForeignKey(entity = RoomCat.class, parentColumns = id, childColumns = catId) })
public final class RoomPersonCat {

  public int personId;

  public int catId;

  public RoomPersonCat(int personId, int catId)  {
    this.personId = personId;
    this.catId = catId;
  }

}

Mám také POJO s cílem manipulovat osoby s kočkami do mé aplikace:

public final class RoomPersonWithAnimals {

  @Embedded
  public RoomPerson person;

  @Relation(parentColumn = id, entityColumn = id, entity = RoomCat.class)
  public List<RoomCat> cats;

}

Otázkou je: jak ušetřit List<RoomPersonWithAnimals>?

Mám dělat, 3 žádosti pokaždé s cílem ušetřit:

  • osoba do tabulky Person
  • kočky do tabulky Cat
  • její kočky do tabulky PersonCat

Zde java kód, který ilustruje požadavky 3:

for (RoomPersonWithAnimals personWithAnimals : persons) {
  myRoomDatabase.roomPersonDao().insert(personWithAnimals.person);
  myRoomDatabase.roomCatDao().insertAll(personWithAnimals.cats.toArray(new RoomCat[personWithAnimals.cats.size()]));

  for (RoomCat cat : personWithAnimals.cats) {
    myRoomDatabase.roomPersonCatDao().insert(new RoomPersonCat(personWithAnimals.person.id, cat.id));
  }
}

V říši, je možné uložit v jediném požadavku těchto dat. Je se o omezení pokoje, nebo moje implementace je špatně?

Předem děkuji za Vaši pomoc !

Položena 28/07/2017 v 08:05
zdroj uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more