Hibernate. Tool per Object Relational Mapping

Documenti analoghi
Hibernate Laboratorio

Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale

Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

ACADEMY SVILUPPATORE JAVA

Il paradigm mismatch. Dott. Doria Mauro

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Le API per la persistenza. Dott. Doria Mauro

Sistemi Distribuiti M Proposta di esercizio: Mapping Object-Relational attraverso Hibernate e JPA

Object-Relational Mapping

TUTORIAL IMPORTAZIONE DATI DA FOGLIO EXCELL WINKHOUSE

A livello fisico, un istanza di base di dati Oracle è composta. Gubiani & Montanari Oracle Database 3

HIBERNATE OPEN SOURCE OBJECT/RELATIONAL MAPPING IMPLEMENTATION FOR JAVA PERSISTENCE

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Esempio di architettura software

ESERCITAZIONE: AZIENDA

R. Orsini - A. Roncato - F. Dalla Libera

Aspetti avanzati nella definizione degli schemi DDL2 1

JDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa

MODULO 2. Query normali e parametriche Query di:

L'ambiente DB2 in LAB (e come collegarsi da remoto)

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O / Servlet: interazione con un DBMS

SQL per le applicazioni D B M G

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Una breve presentazione. Basati sulla specifica EJB Sun Microsystems. Consentono di costruire applicazioni ad oggetti distribuite, utilizzando Java

Basi di Dati: Corso di laboratorio

Connessione con MySQL

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

SQL per le applicazioni D B M G

2011 Politecnico di Torino 1

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Introduzione. A Tecnologie 1

Manuale utente Volta Control

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Ministero della Pubblica Istruzione Ufficio Scolastico Regionale per la Sicilia Direzione Generale

Connessione con MySQL

(Lezione SQL 2) Barbara Di Camillo Dipartimento di Ingegneria dell Informazione. Università degli Studi di Padova

INGEGNERIA DEI SISTEMI SOFTWARE E DEI SERVIZI DI RETE PROGETTO GQM + STRATEGIES. Luca Mastrogiovanni Marco Vasselli 16 Dicembre 2013

Corso di Sviluppo di applicazioni Web

SQL Server Business Intelligence Development Studio. SQL Server BI Development Studio. SQL Server BI Development Studio *Analysis Services*

SQL Server Business Intelligence Development Studio

2011 Politecnico di Torino 1

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Tecnologie di Sviluppo per il Web

Analysis Service. Dutto Riccardo IPSI - tel Dutto Riccardo - SQL Server 2008.

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018

2011 Politecnico di Torino 1

Corso Programmazione Java Standard

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

SQL Server BI Development Studio. SQL Server Business Intelligence Development Studio. Analysis Services

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

1. Giorno 1 alf a. Presentazione dell azienda e del programma formativo b. Introduzione al CTI c. Introduzione al CRM

Corso di Sviluppo di applicazioni Web

Laboratorio di Basi di Dati Esercizio 8.4/9.1

DROOLS Expert Lab. Davide Sottara dsotty AT gmail.com. May 28, 2010

Microsoft SQL Graph Database

Basi di Dati Attive. Basi di Dati Attive

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

PHP ESSENTIALS #10. By WI400 Team. : database e sql

Esercizio 1: archivio CD e DVD

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

Corso di Basi di Dati

Laboratorio Progettazione Web Modello di applicazione Web

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Linguaggi e Traduttori

Entity Framework & SQL Server - Better Together

PROGRAMMAZIONE CLASSE: 4A-4B-4I DISCIPLINA: INFORMATICA A.S. 2016/17

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Introduzione al mondo della persistenza. Dott. Doria Mauro

Componenti di un DBMS

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

Sistemi Distribuiti M. Proposta di esercizio: Spring

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

2011 Politecnico di Torino 1

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A

La connessione ai database MySQL tramite script PHP versione 5.5

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

INTRODUZIONE A J2EE 1.4 E AI SERVIZI WEB ENTERPRISE

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Sistemi Distribuiti M. Proposta di esercizio: Spring

Basi di Dati. Concetti e Principi Generali. Maria Mirto

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

Esercitazione 4: Trigger in DB2

Transcript:

Hibernate Tool per Object Relational Mapping

Introduzione Standard JDBC Utilizzo di SQL Non portabilità tra DB Dialetti differenti Scrittura di codice ripetitivo per CRUD Paradigm mismatch

Paradigm mismatch Problema della granularità Problema dell'ereditarietà e polimorfismo Problema dell'identità Problema delle associazioni Problema della navigabilità delle associazioni N + 1 select problem

Benefici di una soluzione ORM Produttività Velocizzazione nella scrittura delle interrogazioni Manutenibilità Separazione tra modello di dominio e persistenza Performance Persistence unit e cache Indipendenza dal DB sottostante

Hibernate Un possibile tool di ORM è Hibernate Esistono altri tool Lo standard per la persistenza Java è JPA JPA è soltanto una specifica Diverse implementazioni di JPA (Hibernate, OpenJPA, EclipseLink) Hibernate e JPA Non è necessariamente un'implementazione JPA Può diventarlo con librerie aggiuntive

Hibernate e JPA Hibernate ha più funzionalità di JPA JPA è obbligatorio in ambiente enterprise (application server) Sono comunque molto simili L'esempio che segue si basa su JPA standard con implementazione Hibernate

Esempio

Librerie necessarie Librerie Hibernate (www.hibernate.org)./hibernate3.jar./lib/required/*.jar./lib/jpa/hibernate-jpa-2.0-api-1.0.0.final.jar./lib/optional/c3p0/c3p0-0.9.1.jar Driver MySQL (www.mysql.com) mysql-connector-java-5.1.14-bin.jar

MySQL Scaricare e installare MySQL 5.1 Creare un DB vuoto chiamato jpa_test Creare un utente jpa_test con stessa psw Assegnare diritti all'utente

Eclipse Scaricare Eclipse for JavaEE developers Creare un progetto Java Creare cartella lib e aggiungere librerie Aggiungere librerie a classpath Copiare il file persistence.xml in /src/meta_inf Analisi del file Nessuna necessità di specificare le entità persistenti Notare hibernate.hbm2ddl.auto = create

Creazione classe User Classe User: Id, name, lastname Costruttore default e con nome e cognome Mapping di User @Entity @Table @Id, @GeneratedValue( strategy=generationtype.auto) @Column

Classe di Test Creazione main in classe Test Si crea l'entitymanagerfactory e EntityManager EntityManagerFactory f = Persistence.createEntityManagerFactory("JPATest"); EntityManager em = f.createentitymanager(); Si istanzia User Si rende persistente in una transazione em.gettransaction().begin(); em.persist( u ); em.gettransaction().commit();

Prime considerazioni Il database è stato creato automaticamente Analisi delle annotations di mapping Note su EntityManagerFactory e EntityManager La prima è pesante e va creata solo una volta La seconda è la unit-of-work, o persistence context. Tiene traccia degli oggetti persistenti e coordina le operazioni di persistenza in una transazione. Funziona anche da cache. Il flush avviene automaticamente. Lifecycle di un'entità: transient, persistent, detached Identità e istanze in un persistence context.

Classe Department Creazione classe: Id, name, depcode (int) Costruttore default e nome + depcode Aggiunta del riferimento a Department in User Aggiunta del @ManyToOne, nullabile Aggiunta getter e setter Creazione in Test di Department + persist Aggiunta di dep in user Rifattorizzazione in modo che Department venga salvato per primo

Realzioni One to Many Aggiunta della List<User> in Department Aggiunta metodi getter setter + metodo add Aggiunta del @OneToMany(mappedBy,cascade) Modifica di Test in modo da usare il metodo add e non persistere user con entitymanager

Spiegazioni su OneToMany MappedBy per evitare doppi update Cascade per la persistenza transitiva Fare esempio anche per la cancellazione in cascata (su una transazione differente)

Relazioni Many to Many Creazione della classe Role Collezione di Role in User Mapping con @ManyToMany e @JoinTable Aggiunta dei ruoli in Test con salvataggio separato Aggiunta dei ruoli all'utente Creazione nuovo utente e assegnazione altri ruoli

Interrogazioni con JPA QL Aggiunta dei metodi tostring alle entità Interrogazione di base degli Utenti con find di EntityManager Navigazione su Department Navigazione da Department su Users (con query associata)

Interrogazioni con JPA QL Aggiunta di un nuovo dipartimento e utente Semplice select su User Select con filtro su user Select con filtro su Department Select con filtro su Role Con IN: select u from User u, IN(u.roles) r where r.name=:role Con MEMBER OF: select u from User u, Role r where r.name=:role and r member of u.roles