2010-07-22 19 views
12

Questa mattina ero a bordo di una S-Bahn (metropolitana tedesca) e ho incontrato un altro studente, che lavora per IBM. Quello che sta facendo è l'ottimizzazione Java EE. Gli ho parlato del mio piccolo progetto. E raccomandò di non usare "oldschool" Hibernate. Ecco perché la mia domanda è:Hibernate è deprecato?

Hibernate è obsoleto? (in combinazione con Java EE/Web Development)

..o ha fatto proprio prate ..

+4

Quale alternativa ha suggerito? – Alex

+1

Abbiamo detto cosa è deprecato su Hibernate? Utilizzando l'API proprietaria invece di JPA?Implementazione di Hibernate? –

+0

@Robert Anche l'API proprietaria non è deprecata (e viene utilizzata sotto i cofani). –

risposta

25

No, Hibernate non è obsoleto.

Tuttavia, ora c'è JPA (Java Persistence API), che è un'API standard per fare le cose che fa Hibernate.

Si noti che JPA è solo una specifica di interfaccia. Avrai bisogno di qualcosa che implementa JPA e Hibernate è una delle implementazioni di JPA. Oltre ad Hibernate, ce ne sono altri come EclipseLink (l'implementazione ufficiale di riferimento per JPA) e Apache OpenJPA.

+1

A mio parere, continuerei a utilizzare Hibernate (usando le annotazioni, poiché preferisco XML per la persistenza) in quanto ha un sacco di cose che JPA non ha, eppure, personalmente aspetterò per JPA 2.0. – Deleted

+0

JPA funziona anche con annotazioni, non necessariamente con XML. JPA 2.0 è uscito da un po ', ma non tutto lo supporta ancora. Scelgo JPA, a meno che non vi sia un motivo convincente per utilizzare la modalità Hibernate (ad esempio, funzionalità che non sono disponibili tramite JPA). – Jesper

+0

@ Binary255: JPA 2.0 ** è ** lì e il divario tra JPA 2.0 e Hibernate è sottile ora. –

1

APP è solo un modo per farlo. C'è ancora Spring e tutti gli altri framework in cui Hibernate è ben vivo.

3

Hibernate è il provider JPA offerto da JBoss, che è un server Java EE, quindi dubito che Hibernate come implementazione sia obsoleto.

Forse intendeva che l'utilizzo di Hibernate all'interno di un server Java EE, ignorando la persistenza del provider del contenitore, è deprecato e si dovrebbe fare affidamento sul nostro contenitore per tali servizi.

2

No, non è possibile che Hibernate sia obsoleto. C'è lo JPA che è una specifica di persistenza e Hibernate lo implementa. Anche Hibernate ha le sue funzionalità avanzate che non sono disponibili in JPA ed è per questo che Hibernate è la fonte principale di nuove funzionalità aggiunte allo standard JPA.

2

Una possibile ragione per cui potrebbe averti suggerito contro Hibernate è che per un piccolo progetto, il sovraccarico della comprensione di Hibernate può essere piuttosto significativo.

Hibernate è vasto per non dire altro. Anche se può essere usato in un modo semplice, ma per scoprirlo anche tu, dovrai comprenderlo molto di più.

ma state certi che Hibernate NON è deprecato, o sarà in qualsiasi momento nel lontano futuro. è solo che se il tuo ORM ha bisogno di essere modesto, potresti provare altre soluzioni come iBATIS

4

Hibernate, oltre ad essere un'implementazione di JPA, fornisce molte funzionalità extra avanzate di cui manca JPA (sintassi aggiuntiva in query , Supporto QBC ecc.). Alcuni di questi sono davvero utili e difficili da trovare una soluzione alternativa nel mondo JPA (ancora). Senza fornire tali caratteristiche, è difficile dire JPA può "sostituire" Hibernate (da qui, dicendo Hibernate essere ironico)

+0

Un sacco di funzioni extra avanzate * non è più così vero con JPA 2.0. Sì, a JPA 2.0 mancano ancora alcune funzionalità come Query per esempio, tipi di utenti personalizzati, ... ma JPA 2.0 è un grande miglioramento e rende rara la necessità di funzioni proprietarie. –

1

In base a quello che hai detto, suona come che possa essere stato riferiva a Hibernate mappature xml, in in contrasto con l'uso di annotazioni Hibernate o JPA. XML è sicuramente spazzatura vecchia scuola.