La persistenza dei dati è una caratteristica fondamentale di ogni applicazione, e quasi sempre la scelta ricade sull’utilizzo di un database relazionale. Java, fin dalle sue prime versioni, ha avuto a disposizione la libreria JDBC per accedere a tale tipo di database. In questa presentazione si mostrerà come utilizzare la libreria JDBC, mostrandone pregi e limiti. In seguito si mostrerà l’utilizzo tradizionale di Hibernate, forse il più famoso e diffuso degli Object/Relational Mapper (ORM), che permettono di trattare i dati relazionali inserendoli all’interno di oggetti. Infine si introdurrà la Java Persistence API (JPA), la libreria di persistenza ORM introdotta con la Java Enterprise Edition (JEE) 5.
3. The database and the applications
database
Application 1 Application 3
Application 2
Atomicity
another
Consistency db
Isolation
Durability
4. Relational databases
person city
id first_name last_name father born_in id name
n 1 Lucio Benfante 101 n 1
101 Venezia
2 Giacomo Puccini 3 102 born_in_city
102 Lucca
3 Michele Puccini 102
4 Antonio Puccini 2 103 103 Milano
0
father
The term relational database was
originally defined and coined by
Edgar Codd at IBM Almaden
Research Center in 1970.
5. SQL: Structured Query Language
SELECT first_name, last_name FROM person
WHERE last_name = 'Puccini'
ORDER BY first_name;
INSERT INTO person VALUES (5, 'Mario', 'Rossi', NULL, NULL);
UPDATE person SET first_name = 'Carlo' WHERE id = 1;
DELETE FROM person WHERE id = 1;
...and much more, included Data Definition Language (DDL).
6. Relational
Database Management Systems (DBMS)
Informix
DB2 Dynamic Server
(just a small selection)
specific
DBMS
protocol
Application DBMS
14. Hibernate
Getting your objects
SessionFactory sf =
new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Query q = session.createQuery(
“from Person p where p.lastName = :lastName”);
q.setString(“lastName”, “Puccini”);
List people = q.list();
// here you'll have a list of persistent Person objects
Person person = ((Person)people.get(0))
City city = person.getBornIn();
person.setFirstName(“Pippo”);
tx.commit();
session.close();
sf.close();
15. Hibernate
Creating new records
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Person person = new Person(“Lucio”, “Benfante”);
session.save(person);
tx.commit();
session.close();