2009-02-23 13 views
33

ho fatto uso delle seguenti implementazioni JPA:Implementazioni JPA - Qual è il migliore da usare?

  1. Hibernate,
  2. TopLink,
  3. OpenJPA

Ognuno di loro ha i propri punti di forza e di debolezza. Ho trovato Hibernate il più avanzato dei tre, tranne che ha mescolato alcuni dei suoi miglioramenti con JPA, rendendo difficile il passaggio ad altri provider. Ancora più importante, il suo parser di query era molto più indulgente nell'interpretazione di JPA. Rendono leggermente difficile ottenere le librerie corrette per supportare l'ibernazione perché ho trovato una missione che cerca di ottenere le giuste versioni di tutte le dipendenze.

Toplink era ok ma uno è lasciato con la sensazione che sia leggermente paralizzato come sembra che Oracle voglia usare/acquistare? la loro libreria più avanzata. Cercando di scaricarlo era anche una missione perché è necessario installarlo tramite l'esecuzione di un file jar. Ho scoperto che implementava solo la specifica JPA di base. La ragione per cui l'ho usata è stata l'ibernazione che utilizza molte librerie che sono comunemente usate in altri progetti open source e che spesso si ottengono problemi di classloarder, specialmente quando si usa JBoss

OpenJPA - Questo ha di gran lunga la migliore documentazione ed è facile da Scarica e usa ma sembra molto buggato. Forse è solo il mio codice ma il codice ho trovato un uso più avanzato come OneToMany relazioni con CascadeType.all set non sembra funzionare. Certo, potrebbe essere che il mio codice fosse sbagliato e non ho avuto il tempo di testare un caso pulito, ma molti incidenti come questo mi lasciano paura di usarlo. Spero davvero che vada meglio. I suoi messaggi di errore sono spesso inutili nell'aiutare a risolvere il problema.

Quali altre librerie usano le persone e quali preferiscono e perché?

risposta

17

Ho avuto le stesse conclusioni su queste implementazioni.

  1. OpenJPA era/sembrava buggy

  2. Hibernate aveva tonnellate di librerie e sembrava avere problemi con non caricamento pigro tutto.

  3. Toplink è finito come mia scelta. Non era flessibile come avrebbe dovuto essere Hibernate, ma funziona e non devo installare commons-logging.

Quello che proverei dopo è JPOX, che è stato recentemente rinominato in datanucleus.

+8

EclipseLink è (imho) migliore di tutti quelli. – cletus

+2

che dire di objectdb? www.objectdb.com – user3111525

+1

o EBean! http://www.avaje.org/ –

6

Personalmente non credo che OpenJPA sia ancora maturo. Ci sono altre librerie open source che sono più mature e preferirei usarle. Questi sono quelli che prenderei in considerazione nell'ordine:

  1. Ibernare. Hibernate è in circolazione da molto tempo e ha davvero aperto la strada a ORM in Java. L'unico problema che ho con Hibernate è la licenza. È concesso in licenza a LGPL che potrebbe causare il contorcimento di alcune società commerciali (per ragioni che non entrerò qui). Ad ogni modo, se la LGPL è un problema per te, probabilmente è bene stare alla larga.

  2. EclipseLink. Alcune informazioni su eclipselink.Toplink Essentials era la versione gratuita di Oracle della loro implementazione JPA. EclipseLink è stato preso da Toplink, l'implementazione completa JPA di Oracle. EclipseLink sarà il provider JPA 2.0 per Glassfish v3.0, quindi sembra che tutto si stia allontanando da Toplink Essentials e EclipseLink. Sebbene la versione di EclipseLink sia solo 1.0.2, il prodotto è in circolazione da molto tempo con altri nomi.

Un progetto a cui sto lavorando è in TopLink Essentials in questo momento, ma abbiamo in programma di passare a EclipseLink breve. Hibernate era fuori per i problemi di licenza che ho menzionato prima.

+0

help please http://stackoverflow.com/questions/32252715/java-the-following-listed-types-were-not-enhanced-at-build-time-or- in-class-load –

4

OpenJPA è noto come Kodo, che è quello che BEA ha acquistato molto tempo fa. Kodo era l'implementazione di JDO e ora JPA. Inoltre, usiamo OpenJPA abbastanza intensamente. Quindi, non dirò che non è maturo. Va bene Comunque suggerirei di usare Hibernate, ovvero i wrapper JPA attorno a Hibernate.

Motivo? 1) JPA è molto, molto simile a Hibernate 2) Molte posizioni di lavoro hanno il requisito di Hibernate. È meglio orientarsi verso i prodotti tradizionali ... in pratica

Problemi correlati