ПредишенСледващото

преди една година повече, отколкото аз написах една статия, озаглавена "Преглед на най-добрия AndroidORM - ActiveAndroid«. Аз щях да продължи да използва този прекрасен ORM, ако няколко НО:

2) Невъзможност за единица тест (хвърля изключение) и невъзможността да се поправи (вж. 1)

3) Проблеми с нови версии на Android

4) Бъгс, че не са забелязали и че могат да излязат по-късно, когато вече е твърде късно

Във връзка с това, реших да се промени ORM към нещо по-свежа и по-добре. Посъветвах много различни библиотеки, но аз все още не може да вземе решение за "най-добрите". Първоначално аз избрах squidb. но от него също трябваше да бъде изоставена поради сложността на неговата употреба. Да, и генериране на код, аз наистина не харесвам. В крайна сметка открих, че много библиотека, която имах нужда - DBFlow.

Една малка преглед

Един от проблемите, с действащите ORM-библиотеки е, че те използват Java-размисъл за определяне на моделите на бази данни, таблици, диаграми и колони отношения. DBFlow е един от малкото библиотеки, който разчита единствено на обработката на пояснения, за да се създаде Java-код, базиран на основата на SQLiteOpenHelper. Този подход води до увеличаване на производителността по време на изпълнението, и в същото време премахва необходимостта да се напише много шаблон код, обикновено е необходимо да се опише таблиците, извършване на заявки, и така нататък. Г.

Свързани библиотеки

Първата стъпка е да се свържете щепсела ап. предписване на следните редове в корена build.gradle вашия проект файл:

Ние също трябва да се регистрират на хранилище jitpack.io блок с allprojects -> хранилища:

Освен това, в приложение / build.gradle активирате плъгин андроид-ап файл и добавете DBFlow списъка на зависимости. Ние ще се създаде отделна променлива за съхраняване на номера на версията, така че е по-лесно да се промени в бъдеще:

Създаване на база данни

Дефиниране на таблици

Java класове, които служат като модели трябва да бъдат наследени от BaseModel. В допълнение към резюмето, трябва да се уточни базата данни, към която принадлежи на масата. Тук ние покажем как да създадете таблица за организации и потребители

Ние сме в състояние да се свърже лесно с помощта на модели ForeignKey пояснения. Значение saveForeignKeyModel означава за външно актуализиране на ключ, когато обновяване на записа. В този случай, ние изключите тази функция:

Използването Parceler библиотека

Ако с DBFlow използвате Parceler библиотека. добавите към Vakshya клас анотация @Parcel (анализира =). В противен случай Parceler библиотека ще се опита да издавам област, свързана с BaseModel на класа и няма да успеят Грешка: Parceler: Не може да се намери за четене / запис генератор за тип. За да се избегне този проблем, трябва да се уточни кой клас във веригата на наследство трябва да се провери:

Инициализация DBFlow

След това трябва да се инициализира Заявление клас DBFlow:

Промяна клас за кандидатстване в AndroidManifest.xml:

Създаване на записи

ние просто трябва да .save () метод се обадя за да запазите записа в таблицата:

записи за четене

Records също произвеждат много лесно за четене:

актуализиране на регистрите

Наричайки метод спасяване () в актуализацията на обект за запис на първичния ключ.

Изтриване на записи

За да изтриете запис, трябва да извикате метода за изтриване ():

Сключване на сделки

Също така, можете да вмъкнете таблица на елементите, използващи ProcessModelTransaction клас:

миграция база данни

Миграцията е определено чрез създаване на клас миграция или чрез поставяне на валиден SQL-файл в активи / миграции папка // вашия проект. По-долу е пример за клас на миграцията:

коригиране на грешки

модел клас не е намерена

От DBFlow изисква от обработката на анотации, понякога може да се наложи да щракнете върху Build -> Нов проект за генериране на код.

Използвайте с GSON

Ако възнамерявате да използвате с DBFlow Gson библиотека. можете да получите StackOverflowError изключение, когато се опитате да използвате Java обекти. които са наследени от BaseModel. За да се избегнат тези проблеми. следва да бъдат изключени ModelAdapter клас. това е една област, в BaseModel клас:

След това трябва да създадете потребителски Gson Builder, за да се изключи този клас:

Отидете тук за повече информация.

Библиотека на GitHub: DBFlow

Свързани статии

Подкрепете проекта - споделете линка, благодаря!