1 IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI TECNOLOGIE – HIBERNATE & JAVA RMI 2 Hibernate: Object-Relational Mapping • piattaforma middleware open source per lo sviluppo di applicazioni Java che fornisce un servizio di Objectrelational mapping (ORM) • • Come si intuisce dal nome consiste nella tecnica di mappare gli oggetti Java su di un database relazionale In questo modo è possibile, tramite dei semplici metodi invocabili dai nostri oggetti, eseguire le query più diffuse TECNOLOGIE – HIBERNATE & JAVA RMI 3 Hibernate: Object-Relational Mapping • Per il funzionamento necessita di: • Un R-DBMS installato con almeno un database creato • Importare nel progetto le librerie di Hibernate • Un file .cfg.xml che contiene le impostazioni e la configurazione del DBMS • Dei file .hbm.xml per ogni entità del diagramma E-R • • Una ORMpersistable Java class per ogni entity dell’E-R • • Permettono di associare le tabelle alle classi Dunque per ogni file hbm.xml Una classe di utility per la gestione delle sessioni 4 TECNOLOGIE – HIBERNATE & JAVA RMI Hibernate: Object-Relational Mapping configurazione del DBMS utility per la gestione delle sessioni File hbm.xml ORMpersistable java class TECNOLOGIE – HIBERNATE & JAVA RMI 5 Hibernate: Object-Relational Mapping • Nel corso della It2 si è fatto uso del Wizard di Visual Paradigm per generare il codice necessario al funzionamento di Hibernate • • Nello specifico si è ricorso alla Persistent API «Static Method» Tuttavia la generazione automatica comportava diverse limitazioni • • • Sporcava le classi con una serie di metodi statici di classe Legava le classi alla problematica della distribuzione (queste ultime dovevano estendere “Remote”) Ha creato problemi nei Vincoli di Integrità Referenziale in tutti i casi in cui veniva implementato il costrutto o-o della composizione TECNOLOGIE – HIBERNATE & JAVA RMI 6 Hibernate: Object-Relational Mapping • Pertanto si è adottata una strategia differente nella It3 • Configurazione manuale dei file xml • Implementazione manuale sulla falsariga della Persistent API «Data Access Object» di Visual Paradigm • Ogni ORMPersistable entity class è affiancata dal suo «DTO»(Data Transfer Object) che incapsula in esso la entity stessa • • Tutto questo anche per motivi legati alla distribuzione, come vedremo A differenza del pattern DAO generato da VP, abbiamo deciso di ospitare i metodi «Save()», «Delete()», etc… in opportune classi controller (grasp High cohesion) TECNOLOGIE – HIBERNATE & JAVA RMI 7 Hibernate: Object-Relational Mapping • Nel corso della It3 si è fatto utilizzo dei “Criteria” Hibernate offre una API di interrogazione per criteri intuitiva ed estensibile.