Nota prawna: Jestem jednym z programistów Hibernate OGM, więc postaram się podać niektóre z przyczyn.
Hibernate OGM zapewnia obsługę Java Persistence (JPA) dla rozwiązań NoSQL. Ponownie wykorzystuje silnik platformy ORM w trybie hibernacji, ale nadal utrzymuje dane w magazynie danych NoSQL zamiast w relacyjnej bazie danych. Ma również na celu zapewnienie dostępu do określonych funkcji magazynu danych, gdy JPA nie jest dobrze dopasowany.
Takie podejście jest interesujący z kilku powodów:
znane semantyczny i API. Programiści Javy są już zaznajomieni z JPA, co oznacza, że nie trzeba uczyć się API niższego poziomu. Obsługuje również HQL i rodzime zapytania backendu.
Opóźniony wybór backendu. Wybór odpowiedniego magazynu danych NoSQL nie jest trywialny. Dzięki Hibernate OGM nie będziesz musiał angażować się w konkretne rozwiązanie NoSQL i będziesz w stanie łatwo przełączać i testować różne backendy.
Istniejące narzędzia i biblioteki. JPA i Hibernate ORM istnieją już od jakiegoś czasu, a będziesz mógł ponownie korzystać z bibliotek i narzędzi, które ich używają.
Większość modelu logicznego JPA jest dopasowana. Przykładem dobrego dopasowania jest @Embedded
, @EmbeddedCollection
i @Entity
(który może być węzłem, dokumentem lub pamięcią podręczną w oparciu o wybrany magazyn danych). Prawdą jest, że nazwy adnotacji mogą być dziwne, ponieważ będziesz musiał także poradzić sobie z @Table
i @Column
.
Weryfikacja abstrakcji JPA na poziomie obiektu, pozostawiając miejsce na wiele sztuczek i optymalizacji. Zaplanowaliśmy kilka pomysłów, takich jak trwałość poliglota: przechowywanie danych w kilku magazynach danych i używanie najlepszych w konkretnym zadaniu odczytu.
Główną wadą jest to, że niektóre koncepcje JPA nie są łatwo mapowane do świata NoSQL: transakcje na przykład. Podczas gdy będziesz miał dostęp do metod rozgraniczania transakcji, nie będziesz w stanie wycofać się z magazynów danych, które nie obsługują transakcji natywnie (transakcje, w tym przypadku będą używane do grupowania operacji i próbują zoptymalizować liczbę połączeń do db).
Ponadto, jeśli twój zestaw danych ma z natury charakter inny niż model domenowy, to nie powinieneś używać hibernacji OGM.
Dane wiosenne to :) ... Uwielbiam pracować z wiosną w ogóle ... Dziękuję za odpowiedź na moje pytanie. – hajime