La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE

Presentazioni simili


Presentazione sul tema: "STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE"— Transcript della presentazione:

1 STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE
Università degli Studi di Padova Dipartimento di Ingegneria Dell’informazione Corso di Laurea Triennale in Ingegneria Informatica Tesi di Laurea STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE Laureando: Marco Carraro 26 Luglio 2012 Relatore: Prof. Giorgio Maria Di Nunzio Anno Accademico 2011/2012

2 Esempio implementazione associazione uno a molti Conclusioni
SOMMARIO Hibernate Obiettivi POJO e file XML Esempio implementazione associazione uno a molti Conclusioni 26 Luglio 2012 Marco Carraro 2/15

3 Problema: Persistenza degli oggetti
Hibernate Problema: Persistenza degli oggetti 26 Luglio 2012 Marco Carraro 3/15

4 Obiettivi 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/15

5 Classi Java rappresentanti i concetti (POJO)
POJO e XML - 1 Di cosa ha bisogno Hibernate per mappare le classi nel modello relazionale? Classi Java rappresentanti i concetti (POJO) File di mappatura (in XML) solitamente uno per classe 26 Luglio 2012 Marco Carraro 5/15

6 POJO e XML - 2 Esempio POJO: public class Classe{ private long id; …
public Classe(){} //setter and getter //other methods } 26 Luglio 2012 Marco Carraro 6/15

7 POJO e XML - 3 Struttura tipico file XML 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> 26 Luglio 2012 Marco Carraro 7/15

8 Associazione Uno a Molti - 1
Esempio Associazione Uno a Molti - 1 Traduzione in schema relazionale scelta: 26 Luglio 2012 Marco Carraro 8/15

9 Associazione Uno a Molti - 2
Esempio Associazione Uno a Molti - 2 Per il funzionamento necessari 6 file User.java 3 classi Java Item.java Buyer.java User.hbm.xml 3 file XML Item.hbm.xml Buyer.hbm.xml 26 Luglio 2012 Marco Carraro 9/15

10 Associazione Uno a Molti - 3
Esempio Associazione Uno a Molti - 3 USER.JAVA FRAMMENTO USER.HBM.XML import java.util.Set; import java.util.HashSet; public class User { private long id; private String login; private Set<Buyer>items=new 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> 26 Luglio 2012 Marco Carraro 10/15

11 Associazione Uno a Molti - 4
Esempio Associazione Uno a Molti - 4 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> 26 Luglio 2012 Marco Carraro 11/15

12 Associazione Uno a Molti - 5
Esempio Associazione Uno a Molti - 5 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; 26 Luglio 2012 Marco Carraro 12/15

13 Associazione Uno a Molti - 6
Esempio Associazione Uno a Molti - 6 Problema: schema relazionale ottenuto diverso da quello di partenza Schema voluto: Schema ottenuto: Vincolo: Su Item della relazione BUYER c’è un vincolo unique 26 Luglio 2012 Marco Carraro 13/15

14 Notevole riduzione codice necessario per persistenza
Conclusioni - 1 Vantaggi: Notevole riduzione codice necessario per persistenza Elevato riutilizzo codice tra applicazioni diverse Miglior controllo delle performance con DataBase Connection Pool 26 Luglio 2012 Marco Carraro 14/15

15 Introduzione di latenza rispetto alla soluzione con JDBC
Conclusioni - 2 Svantaggi: Introduzione di latenza rispetto alla soluzione con JDBC Compatibilità non completa con tutti i modelli relazionali 26 Luglio 2012 Marco Carraro 15/15


Scaricare ppt "STUDIO DI HIBERNATE ATTRAVERSO I COSTRUTTI DEL MODELLO RELAZIONALE"

Presentazioni simili


Annunci Google