Introduzione all'architettura di ibernazione

Prima di entrare nell'architettura di Hibernate, diamo un'occhiata al perché Hibernate è entrato nel quadro e quale scopo risolve per noi. Hibernate è uno strumento ORM (Object Relational Mapping) per un linguaggio di programmazione Java per sviluppare una logica di persistenza indipendente dal database basata su oggetti. Hibernate fornisce uno strato di astrazione per il recupero e l'archiviazione dei dati in un database.

Perché ibernare?

JDBC (Java Database Connectivity) dipende dal database. Per essere più specifici, la scrittura di query da eseguire dall'applicazione utilizzando JDBC dipende dal database con cui si sta lavorando. Se lavori con MySQL o Oracle, le tue domande saranno diverse. Quindi se nel mezzo di un progetto è necessario modificare il database che richiederà anche un cambio di codice, e ovviamente non lo vogliamo. Considerando che, ibernazione utilizza un linguaggio di query Hibernate indipendente dal database. In breve, l'ibernazione si occupa della maggior parte di ciò che lo sviluppatore ha avuto a che fare con JDBC, ad esempio. Aprire una connessione al DB, chiudere le connessioni, gestire varie eccezioni.

Entriamo quindi nell'architettura di Hibernate per capire meglio come Hibernate ha reso la persistenza dei dati molto più semplice.

Hibernate Architecture

Il concetto principale di qualsiasi ORM è sostituire la scrittura di query SQL specifiche del database con la manipolazione di oggetti.

Per dirla in parole semplici,

  • si crea un POJO (Plain Old Java Object)
  • assegnare valori ai campi usando setter
  • dì al letargo di perseguire quegli oggetti

Hibernate associa le classi Java alle tabelle del database (che comporta anche la mappatura dei tipi di dati Java su tipi di dati SQL).

Quindi toglie il dolore di convertire i campi Java in tipi di dati supportati da SQL. Hibernate lo fa per te.

Allevia anche lo sviluppatore dal dolore della gestione del set di risultati.

Java Application

Durante lo sviluppo della logica di persistenza dobbiamo prendere il supporto di alcune risorse nell'applicazione java. Esaminiamo queste risorse.

Il cuore di qualsiasi applicazione Hibernate risiede nella sua configurazione, che viene eseguita utilizzando,

  • File di configurazione
  • File di mappatura

Sospendi il file di configurazione

Definiamo le proprietà che indicano l'ibernazione con quale database deve interagire e quale driver JDBC utilizzare. Hibernate utilizza un file di configurazione per ottenere tutte queste informazioni.

Sebbene Hibernate sia in grado di generare query sul database, possiamo specificare il dialetto per aiutarlo a generare un SQL migliore per il database richiesto.

Ad esempio, di seguito sono riportate le proprietà che in genere vengono impostate in un'applicazione di avvio a molla

Hibernate Mapping File

Contiene tutte le definizioni di mappatura da classe a tabella. Ogni strumento ORM necessita di un file di mappatura. Usiamo i seguenti modi per dire a Hibernate quale valore di un oggetto deve essere memorizzato in quale colonna della tabella.

  • XML
  • annotazioni

Sintassi di un file di mapping XML in primavera,

Di seguito è riportato il modo in cui annotiamo la variabile di istanza che dovrebbe essere mappata su una colonna di una riga nel database.

Classe di dominio

Come sappiamo, Hibernate è noto per lo sviluppo di una logica di persistenza basata sugli oggetti. Quindi una classe di dominio è un POJO mappato a una tabella nel database.

Configurazione

Per creare una connessione al database, Hibernate deve conoscere i dettagli del database, le classi e altri dettagli. Un oggetto di configurazione viene creato una volta quando un'applicazione viene inizializzata. È principalmente responsabile del bootstrap di Hibernate all'applicazione. Un oggetto di configurazione utilizza il file di configurazione e il file di mapping di ibernazione per eseguire le seguenti operazioni:

  • Carica questi file.
  • Verifica se questi file sono ben formati e validi.
  • Crea metadati in memoria di questi due file.
  • Restituisce un oggetto che contiene questi metadati.

Session Factory

Una factory di sessione viene utilizzata per creare oggetti di sessione. Viene creato dall'oggetto di configurazione. Fornisce uno strato di astrazione, quindi non dobbiamo preoccuparci di come viene creato l'oggetto sessione. È una classe factory globale thread-safe per la creazione di sessioni. Usando l'oggetto di configurazione, otteniamo l'accesso ai dati in memoria creati dal file di configurazione e mappatura.

Da lì, ottiene le proprietà JDBC: nome driver, URL origine dati, nome utente, password, ecc. Usando queste proprietà, creerà oggetti di connessione, che rappresentano la connettività al database.

Utilizzando queste connessioni, viene creato un pool di connessioni. Tutte le informazioni dall'oggetto di configurazione e dal pool di connessioni vengono utilizzate per creare e restituire un oggetto sessione. Quindi, un oggetto factory di sessione è un oggetto pesante. Ogni factory di sessione è configurato per funzionare con un database specifico utilizzando uno dei dialetti Hibernate specificati.

Sessione

Una cosa da notare è che non è correlato a una sessione servlet o una sessione java mail. Una sessione è un gateway per il nostro database. Crea un ponte dalla nostra applicazione al database. Viene creato dalla factory di sessione. Prende l'oggetto connessione e apre una connessione / sessione al database e consente all'applicazione di eseguire operazioni di persistenza sul database.

In uno strumento ORM, si eseguono tutte le operazioni come INSERT, DELETE e UPDATE utilizzando la semantica orientata agli oggetti, il che significa che non si fa più riferimento a tabelle, righe e colonne. È il lavoro delle sessioni a fare tutte le operazioni di persistenza per te.

Transazione

Una transazione è un oggetto di breve durata che rappresenta una singola unità di lavoro come il salvataggio o l'eliminazione di un oggetto in una tabella nel database. Estrae l'applicazione dalla transazione sottostante eseguita utilizzando JDBC, JTA (Java Transaction API), ecc.

Internamente, ibernare utilizzando JDBC, JTA, JNDI (Java Naming and Directory Interface) per generare query SQL per il database configurato.

Conclusione

In questo articolo, abbiamo esaminato come l'architettura a strati di ibernazione aiuta un programmatore a lavorare con un database senza dover conoscere i dettagli dell'API sottostante come JDBC, JTA e JNDI. Abbiamo imparato come Hibernate ci semplifichi la vita gestendo la maggior parte del codice del boilerplate come l'apertura / chiusura della connessione al database. Spero che questo ti dia una chiara comprensione dell'architettura di Hibernate, che ti farà iniziare a usare l'Hibernate Framework nelle tue applicazioni.

Articoli consigliati

Questa è una guida all'architettura di ibernazione. Qui discutiamo l'architettura a strati di ibernazione insieme all'applicazione Java. Puoi anche leggere il seguente articolo per saperne di più -

  1. Che cos'è l'ibernazione?
  2. Hibernate Framework
  3. Hibernate Interview Questions
  4. Che cos'è l'ibernazione Java?

Categoria: