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
- 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
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.
Dal mio punto di vista, preferisco le annotazioni perché è più facile da scrivere e da mantenere.
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
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à.
Grazie per aver menzionato la persistenza di oggetti provenienti da fonti esterne, non ci avevo pensato. –
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.
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.
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.
Ciao, benvenuto su StackOverflow. È davvero difficile capire la tua domanda, puoi migliorarla fornendoci un esempio di codice o qualche altro suggerimento? –
- 1. Differenza tra annotazioni Cascade JPA e annotazione Hibernate Cascade
- 2. Hibernate: Differenza tra @ tecnica di annotazione incorporata e annotazione @OneToOne Tecnica
- 3. Relazione tra APP e Hibernate annotazione
- 4. Differenza tra servlet/mappatura servlet e filtro/mappatura del filtro?
- 5. Hibernate Equivalente annotazione @embeddable per il file di mapping XML?
- 6. differenza tra Hibernate Session e EntityManager
- 7. Differenza tra FlushMode.AUTO e FlushMode.ALWAYS in Hibernate?
- 8. Qual è la differenza tra @Entity in Hibernate e JPA
- 9. Hibernate: migrazione dalla mappatura alle annotazioni - è possibile mescolare hbm e annotazione?
- 10. Hibernate Oracle Tablespace Annotazione
- 11. Qual è la differenza tra annotazione e decoratore?
- 12. Hibernate Tutorial - Dove mettere il file di mappatura?
- 13. Campo di testo usando Hibernate annotazione
- 14. Differenza tra file .keystore e .jks file
- 15. Differenza tra file HDF5 e file PyTables
- 16. Hibernate/JPA - metodi di annotazione dei bean vs campi
- 17. Differenza tra Restrictions.like e .ilike in Hibernate Criteria API
- 18. Differenza tra JOIN e JOIN FETCH in Hibernate
- 19. annotazione @Transactional
- 20. Mappatura one-to-one facoltativa in Hibernate
- 21. Differenza tra file .jar e .dll
- 22. Differenza tra xreadlines e-loop un file
- 23. Differenza tra FILE * "/ dev/stdout" e stdout
- 24. Differenza tra fla, swf e come file
- 25. Differenza tra file .o e .ko
- 26. Differenza tra oggetto codice e file eseguibile
- 27. Annotazione intervallo tra nulla e 100?
- 28. Hibernate mappatura di un secondo campo @Embeddable in una sottoclasse
- 29. Differenza tra "test -a file" e "test file -ef file"
- 30. Hibernate 5.1 con mappatura colonne geometria Postgis 2.2
I file XML non sono obsoleti. Ciò che è più recente non è necessariamente migliore. – Johanna
"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