Disclaimer: Sono uno degli sviluppatori di OGM di Hibernate, quindi cercherò di fornire alcune delle ragioni alla base.
Hibernate OGM fornisce supporto Java Persistence (JPA) per soluzioni NoSQL. Riusa il motore di Hibernate ORM ma persiste le entità in un datastore NoSQL invece che in un database relazionale. Mira anche a fornire l'accesso a specifiche funzionalità di datastore quando JPA non ha una buona corrispondenza.
Questo approccio è interessante per diversi motivi:
Conosciuto semantica e le API. Gli sviluppatori Java hanno già familiarità con JPA, questo significa che non sarà necessario imparare l'API di livello inferiore. Supporta anche HQL e query di backend native.
Scelta del backend in ritardo. Scegliere il giusto datastore NoSQL non è banale. Con Hibernate OGM non dovrai impegnarti in una specifica soluzione NoSQL e sarai in grado di cambiare e testare facilmente backend diversi.
Strumenti e librerie esistenti. Gli ORM JPA e Hibernate sono in circolazione da un po 'e sarai in grado di riutilizzare le librerie e gli strumenti che li utilizzano al di sotto.
La maggior parte del modello logico JPA si adatta. Un esempio di buona vestibilità è @Embedded
, @EmbeddedCollection
e @Entity
(che può essere un nodo, un documento o una cache in base all'archivio dati scelto). Certo, i nomi delle annotazioni potrebbero essere strani perché dovrai anche occuparti di @Table
e @Column
.
JPA astrae la persistenza a livello di oggetto, lasciando spazio a molti trucchi e ottimizzazioni. Abbiamo pianificato diverse idee, come la persistenza poliglotta: memorizzare i dati in diversi archivi dati e utilizzare quello migliore per uno specifico lavoro di lettura.
Lo svantaggio principale è che alcuni dei concetti di APP non sono facilmente mappati al mondo NoSQL: transazioni per esempio. Sebbene sia possibile accedere ai metodi di demarcazione delle transazioni, non sarà possibile eseguire il rollback sugli archivi dati che non supportano le transazioni in modo nativo (le transazioni, in questo caso, verranno utilizzate per raggruppare le operazioni e cercare di ottimizzare il numero di chiamate a il db).
Inoltre, se il set di dati è per natura non basato sul modello del dominio, Hibernate OGM non fa per voi.
Dati primaverili è :) ... Amore con Spring in generale ... Grazie per aver risposto alla mia domanda. – hajime