2009-07-13 18 views

risposta

1

Si consiglia di utilizzare gli strumenti di ingegneria inversa Hibernate per questo. Vedere lo hibernate reverse engineering tools documentation per ulteriori informazioni.

Non mi è chiaro come generare classi annotate JPA, ma potresti voler pensare di non utilizzare più i file hbm.xml se questo è un nuovo progetto, favorendo le annotazioni.

+0

Il tuo link sembra essere rotto. Ho trovato qualche link che potrebbe essere rilevante ma non sono sicuro quale sia il migliore. Sareste in grado di ritrovarlo e correggere il collegamento interrotto? Grazie – ForceMagic

3

Ho usato Hibernate Tools (esempi forniti sul loro sito) con molto piacere. Di seguito, fornisco dettagli sul mio caso d'uso specifico, avanzato e interessante (credo).


In realtà, stavo affrontando una sfida interessante sul nostro grande progetto (si avvicina a 800 tabelle, di database squadra guidata)

  • nuove tabelle manterrebbero in arrivo, così li ho potuto generare dal database (utilizzando HibernateTools e producendo entità annotate) (attualmente stiamo usando un altro processo ...)
  • Ma le tabelle dei mosts non erano nuove, avevo già le implementazioni java e il file .hbm.xml. Entrambi erano stati a volte modificati dal DB con cui erano stati originariamente generati, quindi era impossibile rigenerarli con la garanzia di non rompere nulla. Avevo bisogno di migrare le Entità, cambiando il meno possibile (cioè solo le annotazioni)!

    • Questo doveva essere veloce anche perché le nostre entità tipiche vecchie hanno circa 100 membri (proprie colonne db, oltre a collezioni di entità provenienti da chiavi esterne inversa!).

      Nota: due entità non possono essere compilate con un full-constructor generato, hanno superato il limite di 256 parametri! Tuttavia, sebbene questo Costruttore fosse comunque inutile, chi poteva ricordare l'ordine di 256 parametri, quindi l'ho rimosso.

    • Volevo anche migrare i miei set su quelli generici (ad eccezione del setter con cui non mi sono occupato per ora).

Per la migrazione di mappatura, ho usato Hibernate Tools (personalizzati in base alle esigenze, il modello e il codice) come segue:

  • la fonte delle informazioni è stato il file .hbm.xml, con il file hibernate.cfg.xml

    Nota: ho dovuto prima estrarre il file hibernate.cfg.xml, sostituendo il bean spring che era solito contenere l'elenco. Ma questo era utile anche per gli strumenti di database come Squirrel, che poteva usarlo per abilitare il completamento HQL ...

  • l'output generato era file X2.java (per X.classe java, nella stessa confezione) contenente solo i campi, getter e annotazioni (nessun setter o costruttori) (Imposta generici)

vorrei utilizzare il compilatore Eclipse (errore di "duplice ...") per ricontrolla il mio editing, per renderlo più veloce e meno soggetto a errori (l'errore non era un'opzione, abbiamo molti clienti in produzione!). Per ogni classe migrato, vorrei copiare da generato alla classe esistente:

  • cambiamento persistence.cfg.xml di utilizzare la classe al posto del .hbm.xml
  • taglia e incolla @Entity prima nome della classe
  • taglia e incolla tutti i campi Set dopo i campi esistenti, elimina solo quelli esistenti che hanno un errore di compilazione (il risultato è che ora ho campi con Set generici)
  • taglia e incolla tutti i getter (che è il resto del classe) dopo i setter esistenti
  • aprire la vista struttura, mostrando solo dy pubblico i metodi namici non iniziano con 'set', ordinati alfabeticamente
  • controllare ciascun getter che non ha errori (verificare se qualcosa è andato storto o è stato eliminato da ...)
  • seguendo la vista struttura, considerando solo metodi errati , per ciascun getter nell'ordine: elimina la seconda istanza del metodo, copia le sue annotazioni nella prima istanza (navigazione utilizzando la vista struttura) (l'ordine dei metodi nella classe viene mantenuto, che è stato importante per la cronologia CVS , in particolare nel dimostrare ai non credenti che la migrazione non ha infranto il loro codice, era già stato rotto prima!).
  • ... alcuni dettagli lasciati per ulteriori discussioni ...

Per i curiosi, questo mese siamo quasi 200 entità annotati :-). Una tipica entità di 100 campi richiede circa 30 minuti di lavoro per la migrazione. Mancano solo 300 ore per finire questo cut'n paste per le restanti 600 entità! ;-)

+0

"Nota: Due entità non possono essere compilate con un full-constructor generato, hanno rotto il limite di 256 parametri! Ma io per quanto questo Constructor fosse comunque inutile, chi poteva ricordare l'ordine di 256 parametri, quindi l'ho rimosso." - COME?? L'hai appena cancellato post-build? Sai come specificare in un hbm che non dovrebbe essere generato un costruttore completo? – WhyGeeEx

0

Netbeans ha funzionalità per la generazione di file di configurazione, file annotati e altro

Problemi correlati