INFO-H-301

Programmation orientée objet

TP 8

Bases de données et persistence

Presenter Notes

Persistence

  • Mécanisme qui permet de sauver sur le disque dur la représentation en mémoire d'un objet
  • Problèmes possibles :
    • Penser à sauver aussi les objets liés
    • Attention aux cycles !

Presenter Notes

Persistence

  • La classe doit implémenter java.io.serializable
  • Pour sérialiser un objet, on utilise un java.io.ObjectOutputStream, dont le constructeur prend comme paramètre un java.io.FileOutputStream
  • Pour désérialiser un objet, on utilise un java.io.ObjectInputStream, dont le constructeur prend comme paramètre un java.io.FileInputStream
  • On peut sérialiser/désérialiser plusieurs objets à partir d'un même fichier. Attention à l'ordre !
  • La désérialisation se fait à l'aide d'un typecast
  • On ne peut désérialiser un objet que si sa classe n'a pas changé depuis sa sérialisation
  • Voir exemple de code

Presenter Notes

Bases de données

  • Une base de données (relationnelle) est un ensemble de tables
  • Une table est composée de :
    • Une définition d'un format (des "colonnes")
    • Une liste d'entrées qui respectent ce format (les "lignes")
  • Un moteur de bases de données permet d'interroger une base de données en utilisant un language de requête appelé SQL.

Exemple

+-----------+----------------+----------+
|    id     |      name      |  salary  |
+-----------+----------------+----------+
|    001    |      Smith     |  10000   |
|    ...    |       ...      |   ...    |
+-----------+----------------+----------+

Presenter Notes

SQL

SQL est un langage de requêtes de haut niveau très expressifs. Pour ce cours, nous n'en verrons qu'une toute petite partie.

  • Creation de table :
CREATE TABLE <nom de la table>(<description d'une colonne>*);
  • Description d'une colonne :
<nom> <type> <option>
  • Exemple :
CREATE TABLE products(id INTEGER PRIMARY KEY, name TEXT, size INTEGER);

Presenter Notes

SQL

  • Insertion dans une table :
INSERT INTO <nom de la table>(<nom d'une colonne>*) VALUES(<valeur d'une colonne>*);
  • Exemple :
INSERT INTO products(name, size) VALUES("car", 12);

Presenter Notes

SQL

  • Lecture dans une table :
SELECT <colonne>* FROM <table> [WHERE <condition>];
  • Exemple sans condition :
SELECT name FROM products;
  • Exemple avec condition :
SELECT name FROM products WHERE size > 3;

Presenter Notes

SQL

  • Suppression des éléments d'une table :
DELETE FROM <table> [WHERE <condition>];
  • Il est fortement conseillé de mettre une condition...
  • Suppression d'une table :
DROP TABLE <nom de la table>;
  • Mise à jour d'une valeur :
UPDATE <nom d'une table> SET <colonne> = <valeur> [WHERE <condition>];
  • Exemple :
UPDATE products SET name = "BIG" WHERE size > 10;

Presenter Notes

Accéder à SQL depuis Java

  • Voir exemple.

Presenter Notes