Mam program java dla jednego użytkownika, który chciałbym przechowywać w lekkiej bazie danych, takiej jak Derby lub Sqlite. Chciałbym użyć warstwy abstrakcji danych w moim programie. Wygląda na to, że Hibernacja wymaga dużo konfiguracji i jest przesadą w stosunku do tego, czego potrzebuję. Jakie są lekkie alternatywy dla Hibernate?
Możesz sprawdzić alternatywy wraz z przykładowym zastosowaniem (i przykładową konfiguracją ze Springiem
Břetislav Wajtr
CMobileCom JPA to lekka implementacja JPA zarówno dla języka Java, jak i Androida. Jego rozmiar to około 380K. Jest lekki i szybki. cmobilecom.com
John
Odpowiedzi:
142
Hibernacja wymaga prawie zerowej konfiguracji, jeśli używasz adnotacji. Może nawet automatycznie wykrywać zmapowane ziarna w ścieżce klas! Nie widzę dla niego żadnej alternatywy zarówno z prostoty, jak i z punktu widzenia mocy.
Może również ujawnić się jako JPA, co jest (IMHO) jeszcze prostsze.
również potrzebuje wielu zewnętrznych bibliotek próbujących go używać na Androidzie: P
sherif
4
Próbowałem znaleźć prostszą alternatywę dla Hibernate. W osobistym projekcie użyłem MyBatis (co za okropna nazwa). To było dużo więcej pracy niż Hibernate. Hibernate naprawdę oszczędza dużo kodu SQL i pomaga w relacjach rodzic-dziecko. Przyjrzałem się także kilku ORMom w stylu ActiveRecord dla Javy. Żaden nie wydawał się dojrzały ani łatwiejszy niż Hibernate. Więc wracam do Hibernate.
devdanke
56
czy nie chodziło o ALTERNATYWĘ?
Łukasz Gruner
8
Hibernate nie jest lekką alternatywą dla Hiberernate
cosbor11
55
Moja biblioteka ORMLite jest jedną z takich alternatyw. Obsługuje MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB i Sqlite i można go łatwo rozszerzyć na inne. Używa adnotacji do konfigurowania klas, dobrej obsługi Springa, elastycznego konstruktora zapytań itp.
OrmLite naprawdę wygląda obiecująco! Ale czy ten projekt wciąż żyje? Brak nowej wersji od ponad roku, brak odpowiedzi na żądania ściągnięcia / problemy z Github.
Stefan
3
Wersja 5.0 została wydana w czerwcu 2016 r.
Lauri Laanti
Wersja 5.1 została wydana 19.02.2018 r. Ale nie jest w ogóle porównywalny z Hibernate, a niektóre implementacje adnotacji JPA nie działają poprawnie.
M-Razavi,
„porównywalne z Hibernate”? Oba są ORMami, ale poza tym bardzo się różnią. Jeśli chodzi o implementacje JPA, prosimy o wypełnienie raportu o błędzie, jeśli znajdziesz coś @ M-Razavi.
iBatis jest bardzo lekki. Możesz łatwiej definiować i kontrolować mapowanie SQL do obiektów.
Berlin Brown
... musisz oddać głos na iBatis, choć pamiętaj, że nie jest to alternatywa dla ORM, ponieważ nie próbuje konkurować z Hibernate. To trochę inny rodzaj zwierzęcia, ale pasuje do tego, czego szukasz pod względem wagi.
Myślę, że XML w i / MyBatis jest faktycznie zaletą, ponieważ przechowuje skomplikowane zapytania w formacie, który można łatwo skopiować do konsoli SQL w celu przetestowania.
Peter Tillemans
22
jOOQ jest dostarczany z płynnym DSL symulującym SQL bezpośrednio w Javie jako efekt uboczny dla głównych celów, którymi są:
Generowanie kodu źródłowego
Pełne wsparcie dla standardowego SQL, w tym funkcje języka SQL, takie jak UNION, zagnieżdżone SELECT, wszystkie typy JOIN, aliasing (np. Do samodzielnego łączenia) itp.
Szerokie wsparcie dla niestandardowych SQL, w tym UDT, procedur składowanych, funkcji specyficznych dla dostawcy itp.
jOOQ rządzi! Wdrożyliśmy z nim usługę ETL na dużą skalę i nie mogliśmy być szczęśliwsi. Użyłem iBATIS, a jOOQ daje te same zalety niskopoziomowego SQL bez ryz XML i braku bezpieczeństwa typów.
spieden
3
Zapomniałem wspomnieć o jednej z najlepszych cech jOOQ: złożone i / lub dynamicznie generowane zapytania mogą być składane w kontrolowany sposób i weryfikowane przez kompilator Javy, oszczędzając ci tych wszystkich niejednoznacznych błędów składniowych, które generują bazy danych i zapewniając regresję w czasie kompilacji zakres obowiązywania, gdy schemat zmieni się pod Tobą.
spieden
JOOQ jest niesamowity, ale oczywiście nie jest teraz darmowy dla Oracle i Sybase, więc wielu ludzi unika tego frameworka i używa go jak MyBatis
Makky
@Makky: Dziękujemy za Twoją opinię. Mam nadzieję, że pamiętasz o rzeczywistych propozycjach wartości i nie zamierzasz przełączać się na zupełnie inny framework tylko w oparciu o fakt, że jeden jest darmowy, a drugi nie. Koszt utrzymania i migracji, jaki to spowodowałoby w twoim oprogramowaniu, jest zaporowy i daleko przekracza jakąkolwiek rozsądną licencję komercyjną ...
Lukas Eder
15
Apache Commons DBUtils eliminuje większość powtarzających się czynności związanych z programowaniem JDBC. Wymaga niewielkiej konfiguracji i jest łatwy do nauczenia. Nie jest to struktura ORM (w taki sposób, w jaki Hibernate i inne wspomniane tutaj frameworki), ale automatyzuje mapowanie kolumn SELECT na pola składowe Java, a także inne powtarzalne zadania programistyczne JDBC. Z pewnością jest lekki.
Dodano obsługę SQLite. Nie próbowałem jeszcze tego na Androidzie.
Rob Bygrave
9
Cayenne dobrze mi służyło. Stosunkowo łatwy do zrozumienia i uruchomienia. Uważam, że część dotycząca inżynierii odwrotnej jest szczególnie urocza. Konfigurację można przeprowadzić za pomocą GUI.
Apache Empire-db to relacyjny komponent utrwalania danych typu Open Source, który umożliwia niezależne od dostawcy bazy danych definiowanie dynamicznych zapytań, a także bezpieczne i proste pobieranie i aktualizowanie danych. W porównaniu z większością innych rozwiązań, takich jak np. Implementacje Hibernate, TopLink, iBATIS lub JPA, Empire-db przyjmuje znacznie inne podejście, ze szczególnym uwzględnieniem bezpieczeństwa w czasie kompilacji , ograniczenie nadmiarowości i zwiększoną produktywność programistów.
Przykład:
// Define the queryDBCommand cmd = db.createCommand();DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ").append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;
Ten powinien znajdować się na samej górze. To rządzi !
qwertzguy
2
Mogę się trochę spóźnić na imprezę, ale wydałem ActiveJDBC w 2010 roku, który jest implementacją wzorca ActiveRecord ORM, jest ponad 10 razy lżejszy niż Hibernate w zależnościach, co najmniej dwa razy szybszy w czasie wykonywania i nie wymaga konfiguracji lub adnotacje.
Sormula stworzyłem jako alternatywę dla ORMów wagi ciężkiej. Jest zgodny z CRUD, przyjazny dla POJO, prosty w obsłudze, konfiguracji i zrozumieniu. Możliwe jest użycie konfiguracji zerowej. www.sormula.org
Witamy w Stack Overflow! Dziękujemy za przesłanie odpowiedzi! Przeczytaj uważnie często zadawane pytania dotyczące autopromocji . Należy również pamiętać, że jest to konieczne , aby umieścić disclaimer każdym razem, gdy odwołują się do swojej własnej strony / produktu.
Andrew Barber
2
nie jest w fazie rozwoju, nie ma nowego aktualnego wydania od autora, ostatnie oczekiwane wydanie było w 2012 roku.
Odpowiedzi:
Hibernacja wymaga prawie zerowej konfiguracji, jeśli używasz adnotacji. Może nawet automatycznie wykrywać zmapowane ziarna w ścieżce klas! Nie widzę dla niego żadnej alternatywy zarówno z prostoty, jak i z punktu widzenia mocy.
Może również ujawnić się jako JPA, co jest (IMHO) jeszcze prostsze.
źródło
Moja biblioteka ORMLite jest jedną z takich alternatyw. Obsługuje MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB i Sqlite i można go łatwo rozszerzyć na inne. Używa adnotacji do konfigurowania klas, dobrej obsługi Springa, elastycznego konstruktora zapytań itp.
źródło
Nadal wymaga konfiguracji XML, ale spójrz na MyBatis (dawniej iBatis) .
źródło
jOOQ jest dostarczany z płynnym DSL symulującym SQL bezpośrednio w Javie jako efekt uboczny dla głównych celów, którymi są:
Przeczytaj o jOOQ w tym artykule: http://java.dzone.com/announcements/simple-and-intuitive-approach lub odwiedź stronę bezpośrednio: http://www.jooq.org
(Zastrzeżenie, pracuję dla firmy stojącej za jOOQ)
źródło
Apache Commons DBUtils eliminuje większość powtarzających się czynności związanych z programowaniem JDBC. Wymaga niewielkiej konfiguracji i jest łatwy do nauczenia. Nie jest to struktura ORM (w taki sposób, w jaki Hibernate i inne wspomniane tutaj frameworki), ale automatyzuje mapowanie kolumn SELECT na pola składowe Java, a także inne powtarzalne zadania programistyczne JDBC. Z pewnością jest lekki.
źródło
Możesz rzucić okiem na Ebean ORM . - Brak sesji - leniwe ładowanie po prostu działa - Prostsze API w użyciu i nauce.
źródło
Cayenne dobrze mi służyło. Stosunkowo łatwy do zrozumienia i uruchomienia. Uważam, że część dotycząca inżynierii odwrotnej jest szczególnie urocza. Konfigurację można przeprowadzić za pomocą GUI.
źródło
Mogę zaproponować Apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db to relacyjny komponent utrwalania danych typu Open Source, który umożliwia niezależne od dostawcy bazy danych definiowanie dynamicznych zapytań, a także bezpieczne i proste pobieranie i aktualizowanie danych. W porównaniu z większością innych rozwiązań, takich jak np. Implementacje Hibernate, TopLink, iBATIS lub JPA, Empire-db przyjmuje znacznie inne podejście, ze szczególnym uwzględnieniem bezpieczeństwa w czasie kompilacji , ograniczenie nadmiarowości i zwiększoną produktywność programistów.
Przykład:
źródło
Framework ORMAN jest również dobry. https://github.com/ahmetalpbalkan/orman
Dokumentacja: https://github.com/ahmetalpbalkan/orman/wiki
Porównanie: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
źródło
Mogę się trochę spóźnić na imprezę, ale wydałem ActiveJDBC w 2010 roku, który jest implementacją wzorca ActiveRecord ORM, jest ponad 10 razy lżejszy niż Hibernate w zależnościach, co najmniej dwa razy szybszy w czasie wykonywania i nie wymaga konfiguracji lub adnotacje.
źródło
Możesz rzucić okiem na prevayler (na sourceforge). Nieco lżejsze podejście do wytrwałości. A może myślałeś o raportowaniu przeciwko DB?
źródło
Jeśli korzystanie z relacyjnej bazy danych nie jest obowiązkowe, wypróbuj db4o.
źródło
Sormula stworzyłem jako alternatywę dla ORMów wagi ciężkiej. Jest zgodny z CRUD, przyjazny dla POJO, prosty w obsłudze, konfiguracji i zrozumieniu. Możliwe jest użycie konfiguracji zerowej. www.sormula.org
źródło
Kiteframework to również bardzo lekki framework ORM. Zapewnia prawie wszystkie operacje db przy minimalnych konfiguracjach.
http://deipakgarg.github.com/Kite-ORM/
Ujawnienie: jestem autorem tego projektu
źródło