2009-02-09 23 views
33

Sto solo provando a farmi girare la testa a Spring e capire come collegare una connessione Oracle nel file di configurazione xml, e ora scopro che ho bisogno di un altro framework! - Hibernate, è davvero frustrante perché mi sento come se stessi diventando sempre più profondo in sempre più framework senza realmente ottenere ciò che ho bisogno di fare!Spring vs Hibernate

Ho guardato Hibernate e sembra fare cose simili a Spring, tenendo presente che voglio solo fare alcuni inserti SQL in Oracle.

Sono riluttante e non ho tempo per imparare 2 framework: potrei farla franca solo adottando Hibernate per le cose semplici che devo fare?

+0

Sento il tuo dolore, tuttavia Spring e Hibernate sembrano fare cose molto diverse. Sto scoprendo che sono abbastanza dipendenti l'uno dall'altro per determinati compiti. –

+0

Rinnovo la dichiarazione precedente, apparentemente anche la primavera lo fa. –

+1

"I * just * desidera eseguire alcuni inserimenti SQL in Oracle." Le ultime parole famose. –

risposta

56

... potrei scappare con l'adozione di Hibernate per le semplici cose che devo fare?

Hibernate è per ORM (object-relational mapping) che è, rendere i vostri oggetti persistente ad un RDBMS.

La primavera va oltre. Può essere usato anche come AOP, Dependency Injector, un'applicazione Web e ORM tra le altre cose.

Quindi, se hai solo bisogno di ORM, usa Hibernate. Il tempo verrà quando avrai bisogno di Spring, e lo imparerai allora.

Ecco una visione architettonica di primavera:

spring

e questo è Hibernate:

hibernate

9

primavera e Hibernate sono quadri totalmente diverse per problemi diversi. Spring è un enorme framework con molte funzionalità, Hibernate è un bridge O/R.

Si consiglia di utilizzare semplicemente JDBC vecchio nel proprio caso ('solo alcuni inserti SQL in Oracle').

+0

Anche Spring ha ORM. – OscarRyz

+3

Sì, l'unica cosa che Spring non ha è la sua VM, che verrà probabilmente aggiunta presto no? ;) –

+0

La cosa divertente è che la primavera si dice che sia leggera, anche se è una struttura così grande. Apparentemente la leggerezza è relativa - nel caso di Spring è più leggero di un server di applicazioni Java EE completo. –

4

Spring e Hibernate sono pensati per fare due cose diverse. Spring è prima di tutto un contenitore di inversione di controllo e sottosistema di configurazione, mentre Hibernate è un motore di caricamento e di binding del database. Se non si desidera introdurre un po 'di nuove cose nel codice, attenersi a Spring e inoltrare le proprie query o utilizzare iBatis per eseguire un binding di database molto più semplice.

+2

Non confonderlo con iBatis, IMHO. È davvero un buon quadro, ma un altro per lui. Non ci sono negativi di sicuro. –

7

Si può ottenere usando solo la primavera e spring-JDBC integration. A seconda della complessità delle esigenze di accesso ai dati, potrebbe essere più che sufficiente. La sorgente Object-relation mapping vale anche la pena di essere esaminata se si ha intenzione di fare un sacco di accesso ai dati.

La cosa bella della primavera è che si tratta di una struttura molto liberamente accoppiata. In questo modo puoi leggere i bit che usi e dimenticare il resto, anche in fase di esecuzione.

1

Se tutto ciò che si desidera è inserire sql per Oracle, rimarrò in una semplice libreria JDBC. Tutto ciò che serve è una connessione e forse qualche ConnectionPool (forse c3po). Hibernate e simili sono troppo grandi/troppo complicati e IMO inferiori. Hibernate incorpora JDBC sotto il cofano, ma in ogni modo misurabile è inferiore - più difficile da usare, non più veloce, e le query che devi scrivere o non è più facile.È anche un testamento della loro inferiorità perché HQL fornisce anche un percorso di bypass in modo da poter inserire direttamente le query JDBC. Forniscono questo (ho il sospetto) perché per qualsiasi query complessa non puoi semplicemente costruirlo bene in HQL.