Útmutató az orm dbflow alkalmazáshoz Android alkalmazásban, java-help

Több mint egy éve írtam egy cikket: "A legjobb AndroidORM - ActiveAndroid felülvizsgálata". Én továbbra is ezt a csodálatos ORM-et használom, ha több, de:

2) Az egységvizsgálat lehetetlensége (kivételt kiváltó) és annak meghiúsulása (lásd az 1. pontot)

3) Problémák az új Android verziókkal

4) Azok a hibák, amelyeket nem vettem észre, és ami később jön ki, amikor már túl késő

Ezekkel kapcsolatban úgy döntöttem, hogy megváltoztatom az ORM-et valami frissre és jobbra. Számos különböző könyvtárt tanácsoltam, de még mindig nem tudtam eldönteni a "legjobbat". Kezdetben a választásom a tintahalra esett. de használatának bonyolultsága miatt is el kellett hagynia. Igen, és nem igazán szeretem a kód generációt. Végül megtaláltam a könyvtárat, amire szükségem volt - DBFlow.

Egy kis áttekintés

A meglévő ORM könyvtárak egyikének az az oka, hogy a Java reflexiót az adatbázismodellek, táblázatos sémák és oszlopkapcsolatok azonosítására használják. A DBFlow egyike azoknak a kevés könyvtáraknak, amelyek kizárólag az SQLiteOpenHelper alapú Java-kód létrehozására vonatkozó megjegyzések feldolgozásán alapulnak. Ez a megközelítés növeli a teljesítményt futás közben, és ezzel egyidejűleg megakadályozza, hogy sok sablon kódot írjon, általában az asztalok leírásához, lekérdezések végrehajtásához stb.

A könyvtár csatlakoztatása

Az első lépés az apt plugin csatlakoztatása. írja be a következő sorokat a projekt gyökér build.gradle fájljába:

Szintén be kell regisztrálnunk a jitpack.io repository-t a blokkban allprojects -> repositories:

Ezután az app / build.gradle fájlban aktiválja az android-apt plugint, és hozzáadja a DBFlow-ot a függőségi listához. Készítünk egy külön változót a verziószám megőrzésére, hogy a jövőben könnyebben megváltoztatható legyen:

Adatbázis létrehozása

Táblázatok meghatározása

A modellekként használt Java osztályokat örökli a BaseModelből. Ezenkívül a megjegyzésben meg kell adnunk azt az adatbázist, amelyhez a táblázat tartozik. Itt bemutatjuk, hogyan hozhatunk létre táblázatokat szervezetek és felhasználók számára:

Nagyon könnyen összekapcsolhatunk modelleket a ForeignKey jegyzetelés segítségével. A saveForeignKeyModel értéke azt jelenti, hogy frissíteni kell az idegen kulcsot a rekord frissítésekor. Ebben az esetben kikapcsoljuk ezt a funkciót:

A Parceler könyvtár használata

Ha a Parceler könyvtárat a DBFlow segítségével használja. adj hozzá a @Parcel annotációt (analyze =) a vakcinaosztályhoz. Ellenkező esetben a Parceler könyvtár megpróbálja sorba állítani a BaseModel osztályhoz tartozó mezőket, és hibát okozhat: Hiba: Parceler: Nem található olvasási / írási típusú generátor. A probléma elkerülése érdekében meg kell adnia, hogy mely osztályt kell az öröklési láncban megvizsgálni:

A DBFlow inicializálása

Ezután be kell állítanunk a DBFlow alkalmazási osztályba:

Módosítsa az alkalmazásosztályt az AndroidManifest.xml fájlban:

Rekordok létrehozása

Egy rekord elmentéséhez táblázathoz egyszerűen meg kell hívnunk a .save () metódust:

Olvasási nyilvántartások

Az olvasási rekordok is nagyon egyszerűek:

A rekordok frissítése

Az objektum mentési () metódusának visszahívása frissíti a bejegyzést az elsődleges kulcs segítségével.

Rekordok törlése

Egy bejegyzés törléséhez hívni kell a delete () metódust:

Tranzakciók végrehajtása

Az elemek csoportját is beillesztheti az asztalhoz a ProcessModelTransaction osztály használatával:

Adatbázis-migráció

A migrációt egy migrációs osztály létrehozásával vagy egy érvényes SQL-fájllal határoztuk meg a projekt eszköz / migrációk // mappájában. A következő példa egy migrációs osztályra:

Hibajavítások

Modell osztály nem található

Mivel a DBFlow szükséges a kommentárok kezeléséhez, előfordulhat, hogy a forráskód létrehozásához szükség lehet a Build -> New Project gombra.

Használja a GSON-t

Ha a DBFlow-t a Gson könyvtárával kívánja használni. Ha a Java objektumokat próbálja meg használni, akkor a StackOverflowError kivétel. amelyek öröklődnek a BaseModelből. A problémák elkerülése érdekében. ki kell zárnia a ModelAdapter osztályt. amely egy mező a BaseModel osztályban:

Ezután hozza létre az egyéni Gson Buildert, hogy kizárja ezt az osztályt:

További információkért lépjen ide.

GitHub könyvtár: DBFlow

Kapcsolódó cikkek