2010-06-11 10 views
5

Non ho lavorato con l'ibernazione. Ho un po 'di esperienza in Java. Stavo passando per la fonte di una bestia di un'applicazione java creata da Oracle (Retail Price Management). Mi aspettavo un sacco di codice SQL incorporato, poiché l'applicazione fa un uso pesante del database. Ma con mia sorpresa, nessun codice SQL incorporato! finora. Ho scoperto che stava usando quello che viene chiamato "Hibernate" dal lotto di file .hbm.xml. È un marchio registrato per i programmi java che utilizzano l'ibernazione o forse non ho visto il codice completo ?. Qualcuno potrebbe illuminarmi su come sia possibile? Grazie.I programmi java in ibernazione non hanno il codice sql?

risposta

2

Hibernate, come tutti gli strumenti ORM, anzi riduce o elimina la necessità di utilizzare SQL prime in codice Java, a causa del seguente:

  • molte associazioni tra le varie entità sono registrati nella mappatura Hibernate, quindi queste vengono scaricati automaticamente da Hibernate, ovvero se si ha una relazione di aggregazione tra due classi sul lato Java, questo può essere mappato come una relazione di chiave esterna nel DB e Hibernate, ogni volta che viene caricata un'istanza di classe A, può caricare automaticamente anche le istanze associate di classe B,
  • molte query possono essere eseguite nel linguaggio di query HQL di Hibernate o utilizzando la sua API Criteri.

Sotto il cofano Hibernate genera SQL per comunicare con il DB, ma questo non è visibile sul lato Java. Può essere visto nei log, se è abilitato.

A causa di ciò, i programmi che utilizzano Hibernate hanno molto raramente bisogno di utilizzare direttamente JDBC o SQL. Le eccezioni sono tipicamente associate a schemi di legacy legacy "difficili" che non possono essere completamente gestiti da Hibernate.

1

Hibernate genera SQL per tutte le sue operazioni di database standard. Comprende diversi dialetti SQL e i file di mappatura (.hbm.xml) lo descrivono sulla struttura del database in modo che sappia come costruire le sue query. C'è un'impostazione showSql che puoi attivare se vuoi vederla emettere il suo SQL generato mentre viene eseguito.

1

Hibernate è un Object-Relational Mapper (ORM). Gli ORM sono usati per nascondere i brutti dettagli di incompatibilità SQL [sic] tra i database del tuo programma: tu definisci le tue tabelle e le mappali a una gerarchia di oggetti (i file .hbm.xml) e poi Hibernate fa il resto. Pertanto la maggior parte dei programmi che utilizzano Hibernate non vedrà una singola frase di SQL, a meno che non ci sia un motivo specifico per eseguire una query complicata.

1

Hibernate è uno strumento o una tecnologia che si occupa dell'interazione tra database e applicazione. Devi dire la struttura dell'applicazione e il database ad esso, questo è ciò che è nei file .hbm.xml.

L'SQL è generato da Hibernate in fase di esecuzione (tipo di)

Diciamo che sono una classe Fruit, e oggetti di questo è persistito in una tabella T_FRUIT.

Dite questo al letargo, tramite i file .hbm.xml. Che ci sia una tabella T_FRUIT, questa tabella è rappresentata dalla classe Fruit e quali campi della classe Fruit corrispondono a quali colonne nella tabella T_FRUIT.

E poi sa ogni volta che si sta tentando di salvare un frutto, dovrebbe inserire/aggiornare la tabella T_FRUIT.

Quando si desidera creare una mela, si crea un oggetto di frutta corrispondente alla mela e si salva "salva questo frutto". Hibernate si prende cura di persisterlo.

È possibile avere relazioni definite tra tabelle e Hibernate è abbastanza intelligente da persistere in più tabelle.

Quando si preleva un frutto, ibernare recupera anche i dettagli del frutto e dei suoi figli (i dati delle tabelle di riferimento). E puoi dire se vuoi prendere tutti i bambini allo stesso tempo o come e quando richiesto.

E così via. Lo scopo è quello di semplificarti la vita, e il codice è manutenibile, facile da leggere, portatile, ...

Con queste informazioni, lasciami il redirect you.

Problemi correlati