Hibernate: un ORM tool per la piattaforma Java e .NET

Hibernate: un ORM tool per la piattaforma Java e .NET

In questo post vedremo cos'è un Object Relational Mapping (brevemente ORM) e come Hibernate implementi efficacemente questa tecnica di programmazione. L'ORM è una tecnica di programmazione che permette di "mappare" oggetti di un qualsiasi linguaggio Object-Oriented (ad esempio Java) su di un Database Relazionale. Tale operazione ha una certa complessità in quanto un oggetto è rappresentabile mediante un grafo interconnesso con altri oggetti mentre gli RDBMS rappresentano i dati in una forma tabellare, di conseguenza salvare e caricare grafi all'interno di tabelle è una operazione piuttosto complessa.

Qt: un framework per UI
GWT Designer: un Gui Designer per Google Web Toolkit
Apache Tika: un toolkit Java per l’analisi del contenuto dei documenti digitali

In questo post vedremo cos’è un Object Relational Mapping (brevemente ORM) e come Hibernate implementi efficacemente questa tecnica di programmazione.

L’ORM è una tecnica di programmazione che permette di “mappare” oggetti di un qualsiasi linguaggio Object-Oriented (ad esempio Java) su di un Database Relazionale.

Tale operazione ha una certa complessità in quanto un oggetto è rappresentabile mediante un grafo interconnesso con altri oggetti mentre gli RDBMS rappresentano i dati in una forma tabellare, di conseguenza salvare e caricare grafi all’interno di tabelle è una operazione piuttosto complessa.

Hibernate è un tool Java che implementa non solo la tecnica ORM ma altre funzionalità e facilities:

  • Natural Programming Model: Hibernate consente di sviluppare classi persistenti (cioè responsabili del salvataggio dello stato dell’applicazione su DB) senza stravolgere il naturale svolgimento del paradigma Object-Oriented, cioè permettendo l’uso di eredarietà, polimorfismo, associazioni, composizioni e l’utilizzo delle Java Collections;
  • Transparent Persistence: Hibernate non richiede l’implementazioni di interfacce o di classi base per permette di rendere persistenti classi o strutture dati;
  • High Performance: Hibernate supporta la lazy initialization (l’inizializzazione pigra, cioè la tattica di istanziare un oggetto, inizializzare una variabile, effettuare un calcolo od eseguire un processo solo nel momento in cui tale operazione è richiesta.), la strategia del many fetching (recuperare più istanze possibili), l’optimistic locking con versioning automatico e l’utilizzo di timestamp. Hibernate non richiede speciali tabelle nel database o campi e genera la maggior parte dell’SQL al momento dell”inizializzazione e non a runtime. Hibernate offre sostanzialmente maggiori performance di una programmazione basata su JDBC;
  • Reliability and Scalability: Hibernate è conosciuto per la sua stabilità e qualità, comprovata dal suo utilizzo da parte di migliaia di developers. Hibernate è stato progettato per lavorare in applicazioni basata su cluster di Server e per fornire un’architettura altamente scalabile;
  • Extensibility: Hibernate è altamente customizabile and estendibile.
  • Comprehensive Query Facilities: Include il supporto per l’Hibernate Query Language (HQL), Java Persistence Query Language (JPAQL), Criteria queries, e “native SQL” queries; ognuna delle quale è utile a seconda delle performance di ci si ha bisogno.

Hibernate è nato essenzialmente come un tool che permetteva di salvare e recuperare oggetti Java da un DataBase Relazionale, ma si è poi evoluto col tempo diventando un vero e proprio insieme di soluzioni che permettono di utilizzarlo in altre piattaforme come quella .Net (progetto NHibernate) e di utilizzare le feature presenti nella piattaforma Java a partire dalla versione 1.5 quali JPA e le Annotations:

I vari componenti del framework Hibernate

Nel momento in cui scriviamo è disponibile la versione 3.6 che richiede l’utilizzo di un JDK almeno di versione 1.5, se si vogliono utilizzare versioni precedenti ad esso bisogna utilizzare la versione 3.5; troviamo il download di tutte le versioni al seguente indirizzo:

http://sourceforge.net/projects/hibernate/files/hibernate3/

il pacchetto che andremo a scaricare contiene una serie di cartelle e file che comprendono librerie, la documentazione ed il codice sorgente del tool.

Le librerie che servono al funzionamento sono hibernate3.jar, che contiene le classi dell’Hibernate Core e che devono essere incluse nel classapath del nostro progetto, le librerie sotto la cartella lib/required, che sono librerie di terze parti che devono essere incluse nel classpath ed infine la cartella /lib/jpa, che dobbiamo includere se vogliamo utilizzare le funzionalità JPA e le JPA Annotations.

COMMENTS

WORDPRESS: 0