Ho un'applicazione che utilizza Hibernate 4.xe attualmente sta utilizzando le API native di Hibernate (ovvero ho un SessionFactory
e Session
s). Ho appena noticed che i criteri di API esistente è deprecato in favore di API (superiore) Criteri dell'APP:Criteri/Criteri stile JPA Query di fabbri dalla sessione di ibernazione
Hibernate offre un'eredità
org.hibernate.Criteria
API più vecchio che dovrebbe essere considerato deprecato. Nessuno sviluppo di funzionalità si rivolgerà a tali API. Alla fine, le caratteristiche dei criteri specifici di Hibernate verranno convertite come estensioni all'APPjavax.persistence.criteria.CriteriaQuery
.
Io non voglio avere per convertire la mia applicazione verso utilizzando EntityManager
direttamente (anche se è facile ottenere un Hibernate Session
da lì) perché abbiamo una grande quantità di costume Hibernate logica di configurazione che dovrà essere rimpiazzato. Ciononostante, voglio assolutamente iniziare a utilizzare le API dei Criteri JPA, poiché le vecchie API sono deprecate (e presumibilmente scompariranno in qualche punto casuale in futuro, se le versioni successive di Hibernate sono indicative) e forniscono anche una sicurezza di tipo molto migliore.
Come posso utilizzare la nuova API CriteriaQuery/CriteriaBuilder, se sto utilizzando SessionFactory/Session?
Come stai attualmente ricevendo le tue sessioni? È in una posizione centrale? In questo caso dovresti essere in grado di cambiarlo in modo da ottenere le tue sessioni da un EntityManager in modo da avere accesso all'EM. Il problema è che Session viene utilizzato da EntityManager e non viceversa.Ma se fai il tuo livello più alto usa EntityManager e ottieni solo la Sessione da quella (in modo da non rompere il vecchio codice) starai meglio. –
È in una parte centrale del codice, ma una parte della mia preoccupazione è che abbiamo un sistema di configurazione piuttosto complicato per ottenere Hibernate (programmato) configurato e non sono sicuro di poterlo replicare con JPA. Se i Criteri di Hibernate sono deprecati a favore dei Criteri di JPA, ma non c'è modo di accedervi dall'API di Hibernate, mi sarei aspettato che avrebbero deprecato anche l'API di configurazione di Hibernate (invece sembra che stiano continuando a costruire in modo massiccio Hibernate config API) –
Vero, ma non sembra che tu possa mischiare e abbinare JPA e Hibernate in questo modo. Anche se si ottiene l'istanza di CriteriaQuery senza EntityManager, è necessario un EM per eseguire una query con esso. –