Ú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