Czy ktoś pracujący na Androidzie („gPhone”) ma lub zna miejsce, w którym mogę znaleźć dobre narzędzie ORM? Kod jest napisany w Javie, a bazą danych jest SQLite. Chciałbym znaleźć narzędzie, które ma definicję obiektu, może automatycznie generować tabele i funkcje CRUD (byłoby to niesamowite), lub, poza tym, narzędzie, które może przyjąć definicję tabeli, definicję obiektu, i automatyczne generowanie funkcjonalności CRUD. Pocieszeniem jest to, że wszystko to musi się zdarzyć w ramach systemu Android, który ma swoje własne konwencje dotyczące sposobu dostępu do bazy danych.
285
Odpowiedzi:
Pomyślałem, że po prostu dodam tutaj 0,02 $ o moim pakiecie ORMLite .
Jest to lekki zamiennik Hibernacji i wykorzystuje natywne wywołania bazy danych systemu operacyjnego Android do obsługi SQLite na Androidzie. Obsługuje również wiele innych typów baz danych przy użyciu JDBC na innych architekturach. Mamy listę mailingową Androida na pytania ORMLite.
źródło
To pytanie nie może się starzeć, ale sugerowane ramy mogą. Oto pierwsza lista tego, co uważam za ważne w takich ramach dla porównania:
A oto lista ram z notatkami na temat powyższych punktów. Spojrzałem bardziej na aBatis i Hadi, ale dodałem tylko te, które miały trochę aktywności po 2011 roku.
Nie próbowałem żadnego z nich, ale być może mogę zaoszczędzić trochę czasu obecnym czytelnikom, wymieniając obecnie aktywne projekty. Proszę dodać komentarz, jeśli znasz inne projekty, które spełniają niektóre z powyższych punktów i mają poważny rozwój (z czasem).
EDYCJA (listopad 2013 r.): Zaktualizowano listę do bieżącego stanu projektów. Niektóre z nich dodały tagi wydania do repozytoriów github, a także obsługę Maven / Gradle. Dobra robota!
EDYCJA (kwi 2015): zaktualizowałem listę, dodałem Sprinkles (zgodnie z komentarzem @AndroidGecko) i Realm.io.
źródło
Jeśli wydajność i rozmiar kodu mają znaczenie, sprawdź greenDAO . Jestem jego autorem, a moją motywacją do stworzenia kolejnej ORM było uniknięcie odbicia w hotspotach. Okazało się, że greenDAO może być nawet 4 razy szybszy niż ORMLite. Kasy na stronie funkcji szczegóły.
źródło
Nie znam niczego, o co dokładnie prosisz, ale istnieje alternatywa dla SQLite, która może okazać się przydatna, jeśli wymagania dotyczące architektury są elastyczne. Może warto sprawdzić db4o :
źródło
ActiveAndroid
(20 USD)wygląda na to, że może być dokładnie tym, czego potrzebujesz.źródło
Podobał mi się ActiveAndroid. Wygląda na to, że jest napisany specjalnie dla Androida. To dla mnie plus.
Mam trochę doświadczenia w Ruby on Rails i jeśli podoba Ci się sposób ActiveRecord w Railsach, możesz bardzo szybko zacząć korzystać z tej biblioteki.
https://www.activeandroid.com/
źródło
https://github.com/ahmetalpbalkan/orman
Środowisko Orman może ci pomóc. Jest specjalnie zaprojektowany do tego i bardzo mały i użyteczny.
źródło
Szukam również ORM na Androida. Testowałem ActiveAndroid , NeoDatis i db4o i myślę, że będę używać jednego z dwóch ostatnich.
NeoDatis i db4o są bardzo podobne, dlatego chciałbym uzyskać porady dotyczące wyboru najlepszego. Czy ktoś używa jednego z nich w swoim projekcie? Użyję go do darmowej i płatnej aplikacji, ale wydaje się, że ta dwójka nie ma żadnych ograniczeń licencyjnych dla Androida.
Jest tu test porównawczy , który wydaje się mówić, że NeoDatis jest szybszy niż db4o, ale nie wiem, czy możemy na tym oprzeć moją opinię.
źródło
Jeszcze jeden nowicjusz: android-active-record. Jest to bardzo lekki i łatwy w użyciu system utrwalania dla Androida wspierany przez SQLite http://code.google.com/p/android-active-record/
źródło
ActiveRecordJS z Aptana to JavaScript ORM, który powinien działać na gPhone. Jest przeznaczony do współpracy z Jaxer i Gears. Gdy korzystasz z adapterów Jaxer, możesz połączyć się z SQLLite.
AKTUALIZACJA: Nie wydaje mi się, żeby to było jasne, ale ActiveRecordJS to ORM, który działa po stronie klienta, co może być dla ciebie zaletą na gPhone.
źródło
http://hadi.sourceforge.net
To narzędzie jest bardzo proste i łatwe w użyciu.
źródło
Opracowałem własną implementację JPA ORM dla Androida. Nie jest jeszcze w pełni ukończona, ale możesz dodawać adnotacje do klasy za pomocą adnotacji @Entity, @Id, @Column, a otrzymasz encje JPA, które można przechowywać i odzyskiwać z bazy danych SQLite. Potrzebuje więcej funkcji i czyszczenia, zanim opublikuję go publicznie, ale jeśli będzie wystarczająco zainteresowania, może to przyspieszyć mój wysiłek.
źródło
Chociaż jest to stary post, temat jest nadal aktualny. Dlatego chcę podzielić się ciekawym artykułem i miłym podejściem do rozwiązania większości problemów wymienionych w pytaniu:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
Mam nadzieję, że ktoś uzna to za tak przydatne jak ja!
źródło
Mój własny DroidParts /http://droidparts.org/ właśnie osiągnął v0.5. To biblioteka DI / ORM i nie tylko.
Niewiele dokumentacji, ale zawiera przykładową aplikację.
źródło
Miałem negatywne doświadczenia z db4o (w. 8): indeksowanie nie działało poprawnie (wyjątek itp.). Nie udało mi się więc uniknąć tworzenia duplikatów w obcych tabelach, mając obiekt w strukturze obiektu. Bardziej szczegółowe wyjaśnienie w moim pytaniu . Mam nadzieję, że któregoś dnia byłoby lepiej.
źródło