2012-04-04 16 views
6

Oggi stavo cercando di creare un'applicazione utilizzando Hibernate come ORM. Così mentre creavo avevo un dubbio. Qual è la migliore pratica da utilizzare, file di mappatura Hibernate (file .hbm) o annotazioni? Quali sono i pro e i contro? Per favore aiutami a capire.Differenza tra file di mappatura Hibernate e annotazione

risposta

12
  • non c'è alcuna differenza funzionale. Puoi fare (quasi) le stesse cose con entrambi gli approcci
  • file xml prima che Java avesse annotazioni (aggiunto in 1.5), quindi possono essere considerati un modo obsoleto di mappatura
  • in genere è preferibile utilizzare le annotazioni JPA piuttosto che quelli specifici per l'ibernazione; se si utilizza XML - v'è un formato XML dell'APP, che dovrebbe essere preferito per il letargo nativo uno
+4

I file XML non sono obsoleti. Ciò che è più recente non è necessariamente migliore. – Johanna

+1

"possono essere considerati". Non ho insistito che lo fossero. Ho anche notato che non c'è alcuna differenza funzionale. Ma le annotazioni sono preferibili in molti casi. – Bozho

0

annotazioni sono basate sul principio della convenzione sulla configurazione:

http://en.wikipedia.org/wiki/Convention_over_configuration 

mentre i file XML sono solo la configurazione.

Ci sono molte discussioni sull'uso delle annotazioni o sull'uso della configurazione.

stackoverflow link

Dal mio punto di vista, preferisco le annotazioni perché è più facile da scrivere e da mantenere.

+1

Dovrei essere rispettosamente in disaccordo con le annotazioni basate sul principio della convenzione sulla configurazione. Le annotazioni non riguardano affatto le convenzioni. È semplicemente un mezzo alternativo per configurare da XML. – M7Jacks

4

Un buon caso d'uso per l'utilizzo dell'approccio XML è se si stanno persistendo oggetti che sono stati generati da un'altra utility e quindi non possono essere annotati.

Oltre a questo, vorrei utilizzare le annotazioni in quanto tende a prestarsi a un'implementazione più pulita e si è meno propensi a introdurre bug mediante errori di ortografia dei nomi delle proprietà.

+0

Grazie per aver menzionato la persistenza di oggetti provenienti da fonti esterne, non ci avevo pensato. –

8

La domanda è: qual è il vostro gusto - entrambi i modi possono fare (principalmente) lo stesso, la differenza è come scrivere.

Con le annotazioni si ha la variabile membro Java/getter e la mappatura direttamente insieme in un unico punto.

I file di mapping Xml offrono una panoramica migliore della tabella e della relativa mappatura.

A mio parere, i file di mapping xml consentono di progettare meglio il database e l'applicazione. Le annotazioni tendono a forzare la direzione classe Java -> mapping -> tabella del database, che è la direzione sbagliata (il database deve sempre essere progettato prima - cambiare le tabelle del database in un secondo momento è un grosso sforzo - la maggior parte delle perdite di prestazioni sono in una cattiva progettazione del database - Le classi Java possono essere facilmente modificate in qualsiasi momento).

Non se un vantaggio funzionale del file XML: Se si dispone di diversi database con differenze strutturali, ad esempio un database Oracle e un database MySQL, forse alcune differenze nei nomi di tabelle e tipi di dati, quindi per il porting delle applicazioni da un database ad un altro hai solo bisogno di scrivere alcuni nuovi file di mappatura. Non è necessario modificare una singola riga di codice Java. Questo non è possibile con le annotazioni.

Preferisco utilizzare i file di mapping xml. Questo è il il mio gusto.

2

Questo è come si dice nel "PUNTO TUTORIAL"

"Se hai intenzione di rendere l'applicazione portabile su altre applicazioni EJB 3 ORM compatibile, è necessario utilizzare le annotazioni per rappresentare le informazioni di mappatura, ma ancora se si desidera una maggiore flessibilità allora si dovrebbe andare con mappature basate su XML"

Per quanto mi riguarda preferirei file di configurazione XML, di annotazione. Perché allora possiamo fare cambiamenti, con modifiche minime al codice.

-1

Le annotazioni sono state sviluppate con il linguaggio Java e lo sviluppatore java è facile da imparare rispetto a XML. E un altro punto nei nomi delle tabelle in tempo reale e nomi di colonna sono fissati al 99%, quindi non c'è bisogno di cambiare il codice Java anche , ma se si desidera modificare i nomi delle tabelle e delle colonne di frequente si sposterà con XML lima finalmente cfg.xml è manadatary perché il database può cambiare.

+0

Ciao, benvenuto su StackOverflow. È davvero difficile capire la tua domanda, puoi migliorarla fornendoci un esempio di codice o qualche altro suggerimento? –

Problemi correlati