ORM w Androidzie

W tym wpisie napisałem kilka słów o przechowywaniu danych w mojej aplikacji. Wspominałem tam również, że z powodu prostego schematu bazy danych nie zamierzam używać ORMa. No więc… sytuacja się trochę zmieniła 🙂

Po napisaniu kilku insertów, selectów itd. stwierdziłem jednak, że odrobina pomocy od strony jakiegoś framework’u nie zaszkodzi 🙂

Po przejrzeniu dostępnych frameworków wybrałem ORMLite. Cytując opis ze strony:

Jedyną funkcjonalnością (przynajmniej na ten moment), której brakuje mi w ORMLite to wpieranie relacji many-to-many. No ale jak to mówią – nie można mieć wszystkiego 🙂

Sama konfiguracja była dosyć łatwa. Pierwszym krokiem jest dodanie zależności do gradle:

Dalej już pozostało tylko stworzyć encje:

DAO dla naszej encji:

DAO rozszerza klase RuntimeExceptionDao. Zaimplementowałem to w ten sposób ponieważ podstawowe DAO dostarczane przez ORMLite wymaga obsługi java.sql.SQLException, który może zostać rzucony przez każdą metodę DAO. RuntimeExceptionDao (jak sama nazwa wskazuje) rzucza RuntimeException zamiast wspomnianego wczesniej SQLException.

Jeszcze jedną rzeczą, na którą warto zwrócić uwagę to poniższa linijka:

Metoda queryForAll() zwraca java.util.List. Aby przekonwertować to na liste Scala’ową wystarczy na tej liście wywołać metodę toList.

Kolejnym krokiem jest implementacja klasy rozszerzająca OrmLiteSqliteOpenHelper. Moja implementacja wygląda następująco:

Mamy dwie metody – jedna jest wywoływana przy tworzeniu bazy danych, a druga w momencie jej upgrade’u. Przy tworzeniu bazy danych  używamy metody statycznej

I ostatnią rzeczą, którą musimy zrobić to utworzenie instancji DAO, których będziemy używać. Aby to zrobić musimy tylko wywołać metodę OrmDatabaseHelper.getDao(Class<T>), a zwrócone DAO przekazać jako parametr konstruktora dla RuntimeExceptionDao.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *