Cos'è Hibernate Framework?
Hibernate è un framework di persistenza java basato su mapping relazionale di oggetti (ORM) open source. È uno strumento di mappatura ORM in Java. Hibernate è progettato con la necessità di ridurre la complessità durante la connessione di un database relazionale tramite Java. Il framework di ibernazione è progettato per mappare gli oggetti Java per implementare la programmazione orientata agli oggetti nel database relazionale. Ecco come ibernare si connette al database relazionale per eseguire query:
- Hibernate si collega direttamente con il database specificato e utilizza il linguaggio di query di ibernazione (HQL) per eseguire query e mappare i risultati delle query agli oggetti Java.
- Hibernate utilizza le proprietà impostate nel file XML di configurazione Hibernate per mappare i risultati della query agli oggetti java.
- La connessione al database viene creata utilizzando una sessione che aiuta a salvare e recuperare l'oggetto java persistente.
- La sessione viene creata utilizzando l'interfaccia di fabbrica Session. Nel caso ideale, dovrebbe esserci solo una factory di sessione per database.
Confronto tra Hibernate e JDBC
Ecco una tabella di confronto che mostra un confronto tra ibernazione e JDBC:
Hibernate | JDBC |
Hibernate contiene classi concrete che forniscono la logica del boilerplate. | JDBC fornisce solo interfacce e classi astratte. |
Tutte le eccezioni generate dal letargo sono deselezionate. | Tutte le classi in JDBC generano eccezioni verificate. |
Non richiede più gestione delle risorse e lo fa internamente. | Richiede una maggiore gestione delle risorse come l'apertura e la chiusura delle risorse. |
Memorizza direttamente gli oggetti Java. | Non può archiviare oggetti direttamente. |
Supporta query indipendenti dal database. | Supporta query specifiche del database. |
Supporta la memorizzazione nella cache. | Non supporta la memorizzazione nella cache. |
Supporta il caricamento lento. | Non supporta il caricamento lento. |
Hibernate Framework Architecture
Hibernate segue l'architettura a strati e ha i seguenti livelli:
- Livello di applicazione Java
- Strato di ibernazione
- Livello API back-end
- Livello database
Il livello di ibernazione contiene i seguenti componenti che sono i seguenti:
1. Sospendi l'oggetto di configurazione
Questo è il primo oggetto che si deve creare per stabilire una connessione al database usando l'ibernazione. Dovrebbe essere idealmente creato una volta, durante l'inizializzazione dell'applicazione. L'oggetto di configurazione fornisce quanto segue:
- Connessione al database: la connessione al database viene stabilita utilizzando uno o più file di configurazione. I file sono ibernati .properties e hibernate.cfg.xml.
- Mappatura: crea una mappatura tra le classi java e le tabelle del database relazionale.
2. Fabbrica di sessione
L'oggetto di configurazione creato nel passaggio 1 viene utilizzato per creare un oggetto factory di sessione che rende pronta la configurazione di ibernazione utilizzando il file di configurazione fornito e consente di creare l'oggetto sessione. Poiché la factory di sessione è un oggetto pesante, di solito viene creata una volta durante la fase iniziale dell'applicazione. È necessario un oggetto factory a più sessioni nel caso in cui sia necessario stabilire connessioni a più database. Inoltre, la factory di sessione è un oggetto thread-safe.
3. Sessione
L'oggetto sessione stabilisce una connessione fisica con il database. È un oggetto leggero e dovrebbe essere creato ogni volta che è richiesta l'interazione con il database. Se un oggetto deve essere persistito o deve essere recuperato, può essere eseguito solo utilizzando l'oggetto sessione. L'oggetto sessione deve essere chiuso non appena l'operazione richiesta è completata perché non è thread-safe.
4. Transazione
È un oggetto opzionale e rappresenta un'unità di lavoro svolta con il database. Un oggetto transazione assicura che tutte le operazioni debbano essere eseguite o nessuna di esse debba essere eseguita. È un oggetto a thread singolo e di breve durata.
5. Oggetto query
Questo oggetto utilizza il linguaggio di query strutturato (SQL) o Hibernate Query Language (HQL) per recuperare i dati dal database e creare istanze di oggetti. Un oggetto query può essere utilizzato per limitare l'output restituito dalla query, associare i parametri della query ed eseguire la query.
Interrogazioni
Qui eseguiremo alcune domande che renderanno le cose più chiare. Consideriamo un dipendente di entità con classe strutturata come:
Codice:
Package com.edubca.hibernatetest;
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable
(
private static final long serialVersionUID = -1798070786993123455L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "empID")
private Integer empID;
@Column(name = "NAME")
private String empName;
@Column(name = "SALARY")
private Integer salary;
//Getters and setters
)
Hibernate richiede un file XML chiamato hibernate.cfg.xml che assomiglia a:
Codice:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create
Di seguito è riportato il codice per mostrare come avviene l'inserimento e il recupero nel database usando l'ibernazione:
Codice:
//Create Configuration object
Configuration con=new AnnotationConfiguration().configure(new File("hibernate.cgf.xml"));
// create session factory using configuration
SessionFactory fact=conf.buildSessionFactory();
//get session from session factory
Session session=fact.openSession();
//Instantiate and populate Employee entity object
Employee emp=new Employee();
emp.setempID(1);
emp.setempName(“Yash”);
emp.setSalary(40000);
Employee emp1=new Employee();
emp1.setempID(2);
emp1.setempName(“Aman”);
emp1.setSalary(42000);
//persist emp object
session.save(emp);
//persist emp1 object
session.save(emp1);
//retrieve data from database
Query query=session.createQuery(“from Employee”);
List list= query.list();
For(Employee e : list)(
System.out.println(“Employee with ID ” + e.getempID() + “ has Name ” + e.getempName() + “ has salary ” + e.getsalary());
)
Produzione:
Un dipendente con ID 1 ha Nome Yash ha uno stipendio di 40000.
Un dipendente con ID 2 ha un nome Aman che ha uno stipendio di 42000.
Conclusione
In questo articolo, abbiamo coperto l'ibernazione in dettaglio, sulla sua architettura, il confronto con JDBC ed esempi di codice. Abbiamo anche notato che l'ibernazione fornisce un modo semplice ed efficiente per interagire con il database.
Articoli consigliati
Questa è una guida al Framework Hibernate. Qui discutiamo l'architettura, i componenti e il confronto di ibernazione e JDBC con esempi di codice. Puoi anche consultare i seguenti articoli per saperne di più -
- Strutture in Java
- Che cos'è Test Automation Frameworks?
- Framework HADOOP
- .Net Core vs .Net Framework
- Grafica 2D in Java
- Lancio contro Lancio | Le 5 differenze principali che dovresti conoscere