1
IMPLEMENTAZIONE
TECNOLOGIE:HIBERNATE & JAVA RMI
TECNOLOGIE – HIBERNATE & JAVA RMI
2
Hibernate: Object-Relational Mapping
• piattaforma middleware open source che fornisce un
servizio di Object-Relational mapping (ORM) per lo
sviluppo di applicazioni Java
•
•
Consiste di una tecnica per la mappatura della struttura di oggetti
Java su di un database relazionale
Fornisce un’interfaccia Object-Oriented per la persistenza degli
oggetti, nascondendo la logica relazionale sottostante
3
TECNOLOGIE – HIBERNATE & JAVA RMI
Hibernate: Object-Relational Mapping
• Architettura Middleware
• L’applicazione costruisce la
sua SessionFactory
• La SessionFactory costruisce
e gestisce Sessioni, oggetti
leggeri facade verso gli strati
sottostanti
• La Sessione costruisce
Transazioni e gli oggetti
necessari al querying
TECNOLOGIE – HIBERNATE & JAVA RMI
4
Hibernate: Object-Relational Mapping
• Fase di setup:
• Installazione R-DBMS, definizione DB e utente con privilegi
• Inclusione delle librerie Hibernate (rel. 4.1)
• Definizione file hibernate.cfg.xml con i parametri di connessione al
DBMS e la lista dei files di mapping
• Definizione file .hbm.xml per ogni classe persistente(best practice)
•
•
Definisce la mappatura effettiva attributo-colonna
Una classe di utility per l’inizializzazione della SessionFactory
•
•
Costruisce l’oggetto SessionFactory composto
Dichiara un’interfaccia facade per il sistema verso persistenza
TECNOLOGIE – HIBERNATE & JAVA RMI
5
Hibernate: Object-Relational Mapping
•
XML che definisce i parametri per la costruzione della SessionFactory
TECNOLOGIE – HIBERNATE & JAVA RMI
6
Hibernate: Object-Relational Mapping
•
Mappatura della classe POJO su tabella relazionale
TECNOLOGIE – HIBERNATE & JAVA RMI
7
Hibernate: Object-Relational Mapping
Mappatura dell’ereditarietà di tipo
“Table Per Class”
•
•
•
•
Un’unica tabella per mappare l’intera
gerarchia di classi
I campi della tabella mappano l’unione degli
attributi delle classi della gerarchia
Un campo Discriminator determina la classe
di appartenenza dell’oggetto mappato nel
relativo record
TECNOLOGIE – HIBERNATE & JAVA RMI
8
Hibernate: Object-Relational Mapping
•
La classe Facade Persistence
•
•
•
•
Classe Singleton per la visibilità
Costruisce la SessionFactory
all’interno del costruttore, richiamato
al primo accesso al metodo
getInstance()
Dichiara un’intercaccia Facade per la
nostra applicazione verso le principali
funzionalità dello strato di persistenza
Può essere interpretata come una
classe Adapter, in quanto rappresenta
un livello di indirezione rispetto
all’interfaccia del livello sottostante
TECNOLOGIE – HIBERNATE & JAVA RMI
9
Hibernate: Object-Relational Mapping
• Features adottate: HQL
•
•
•
Linguaggio di
interrogazione ispirato ad
SQL
Classi anziché Tabelle
Oggetti anziché Campi
TECNOLOGIE – HIBERNATE & JAVA RMI
10
Hibernate: Object-Relational Mapping
• Features adottate: Queries polimorfiche
•
“from java.lang.Object”
•
Recupera tutti gli oggetti della classe Object e della sue sottoclassi, presenti in
persistenza. Abbiamo quindi tutti gli oggetti nel DB
•
•
•
•
“from model.Noleggio”
Recupera gli oggetti delle classi Noleggio e Prenotazione
“from model.Noleggio where Discriminator=‘Prenotazione’”
Recupera i soli oggetti della classe Prenotazione
TECNOLOGIE – HIBERNATE & JAVA RMI
11
Hibernate: Object-Relational Mapping
• Features adottate: Queries by Criteria
Hibernate offre una API
di interrogazione
integralmente basata
su paradigma ad
oggetti
Scarica

ing_sw_presentazione 9 implementazione