Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoModesto Mattei Modificato 6 anni fa
1
STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE
Università degli Studi di Padova Facoltà di Ingegneria Corso di Laurea Triennale in Ingegneria Informatica Tesi di Laurea STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE Relatore: Prof. Giorgio Maria Di Nunzio 26 Luglio 2012 Laureando: Marco Carraro Anno Accademico 2011/2012
2
Problema: Letteratura vasta da Java a relazionale ma non viceversa
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale HIBERNATE Problema: Letteratura vasta da Java a relazionale ma non viceversa 26 Luglio 2012 Marco Carraro
3
Università degli studi di Padova
Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Obiettivi della tesi Fornire documentazione sull’implementazione di schemi relazionali con Hibernate Analizzare vantaggi introdotti da Hibernate ed eventuali incompatibilità con alcuni schemi relazionali 26 Luglio 2012 Marco Carraro
4
Classi Java rappresentanti i concetti (POJO)
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Di cosa ha bisogno Hibernate per capire come realizzare un modello relazionale?? Classi Java rappresentanti i concetti (POJO) Files di mappatura (in XML) solitamente uno per classe Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
5
Struttura tipico file di mappatura: <!Doctype….>
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Struttura tipico file di mappatura: <!Doctype….> <hibernate-mapping> <class> <id>Def id</id> <param name=“attr” not-null=“true” unique=“true”/> <one-to-one …/> <one-to-many …/> <many-to-one …/> <many-to-many …/> </class> </hibernate-mapping> Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
6
ESEMPIO: ASSOCIAZIONE UNO A MOLTI CON ATTRIBUTI COMUNI
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale ESEMPIO: ASSOCIAZIONE UNO A MOLTI CON ATTRIBUTI COMUNI TRADUZIONE IN SCHEMA RELAZIONALE SCELTA: Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
7
3 file XML di mappatura - Item
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Necessari sei file: - User 3 classi Java - Item - Buyer 3 file XML di mappatura Item Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
8
User.java => usa Set USER.JAVA FRAMMENTO USER.HBM.XML
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale User.java => usa Set USER.JAVA FRAMMENTO USER.HBM.XML public class User { private Long id; private String login; private java.util.Set<Buyer> items= new java.util.HashSet<Buyer>(); // constructors setter and getter } … <property name=“login” not-null=“true”/> <set name="items" table="BUYER"> <key column="BUYER_ID"/> <one-to-many class="Buyer"/> </set> Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
9
Item.java => contiene oggetto di tipo User
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Item.java => contiene oggetto di tipo User ITEM.JAVA FRAMMENTO ITEM.HBM.XML public class Item { private Long id; private String name; private String description; private User buyer=null; //constructors, setter and getter } … <join table="BUYER" inverse="true"> <key column="ITEM_ID" unique="true"/> <many-to-one name="buyer" class="User" column="BUYER_ID"/> </join> Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
10
FRAMMENTO BUYER.HBM.XML
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Buyer.java => classe intermedia necessaria per raccogliere attributi comuni BUYER.JAVA FRAMMENTO BUYER.HBM.XML <class name="Buyer" table="BUYER" mutable="false"> <composite-id name="id" class="Buyer$Id"> <key-property name="itemId" access="field" column="ITEM_ID"/> <key-property name="userId" access="field" column="BUYER_ID"/> </composite-id> <property name="amount" column="AMOUNT"/ > <many-to-one name="user” not-null="true" insert="false" update="false"/> <many-to-one name="item” not-null="true" insert="false" update="false"/> </class> public class Buyer { public static class Id{ private long itemId; private long userId; //constructors, getter and setter } private Id id=new Id(); private User user; private Item item; private double amount; Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
11
NOTA: Su Item della relazione BUYER c’è un vincolo unique
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale Problema => schema relazionale ottenuto diverso da quello di partenza Schema voluto: Schema ottenuto: Ritagliare le immagini??? NOTA: Su Item della relazione BUYER c’è un vincolo unique 26 Luglio 2012 Marco Carraro
12
Notevole riduzione codice necessario per persistenza
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale CONCLUSIONI - 1 Vantaggi introdotti: Notevole riduzione codice necessario per persistenza Elevato riutilizzo codice tra applicazioni diverse => classi più leggibili Miglior controllo delle performance con DataBase Connection Pool Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
13
Introduzione di latenza rispetto alla soluzione con JDBC
Università degli studi di Padova Tesi di Laurea Studio di Hibernate attraverso i costrutti del modello relazionale CONCLUSIONI - 2 Svantaggi: Introduzione di latenza rispetto alla soluzione con JDBC Compatibilità non completa con tutti i modelli relazionali Ritagliare le immagini??? 26 Luglio 2012 Marco Carraro
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.