Ceci est une ancienne révision du document !
D14 - TP6 - JDBC
Attention, Java utilise par défaut IPV6 et cela pose des problèmes en TP pour forcer IPV4 suivre les instructions suivantes : Java et IPV6
Pour éditer la base de données vous pouvez utiliser pgadmin3 ou installer http://sqldeveloper.solyp.com/
Utilisation simple de JDBC
- En utilisant pgadmin3 ou la ligne de commande et le script journal.zip créer les tables qui représentent des journaux.
- Créer une classe que se connecte à votre base de donnée postgresql. Pensez à mettre en place correctement les librairies nécessaires. Pour le moment, la connection sera représentée par une variable d’instance.
- Ajouter une méthode qui affiche la liste des journaux en utilisant un Statment
- Créer une fonction ajouterJournal(…) qui permet d’insérer un journal dans la base de données
- En utilisant un PreparedStamement, lire un code de Journal au clavier et afficher les informations correspondantes tant que l’on ne rentre pas 0.
Utilisation des métadonnées
- Ajouter une méthode qui affiche les métadonnées correspondant à la base de données
- Ajouter une méthode qui afficher les métadonnées correspondant à la requête
select * from journal
Batch Update
- Utiliser les batch update pour ajouter des journaux en lisant un fichier texte formaté (
code_j:titre:prix:type:periode::adr_j
).
Utilisation d'un pool de connexion
En utilisant la classe suivante, utiliser maintenant un pool de connexion au lieu d’une variable globale.
- DatabaseManager.java
package fr.univ_tln.bruno.mycompany.jdbc.pool; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.LinkedList; import java.util.Queue; /** * The Class DatabaseManager. */ public class DatabaseManager { /** The Constant freeConnections. */ private static final Queue<Connection> freeConnections = new LinkedList<Connection>(); /** The Constant numberOfInitialConnections. */ private static final int numberOfInitialConnections = 5; /** The Constant password. */ private static final String password = System .getProperty("MyCompany.database.password"); /** The Constant url. */ private static final String url = System .getProperty("MyCompany.database.url"); /** The Constant user. */ private static final String user = System .getProperty("MyCompany.database.user"); static { for (int i = 0; i < numberOfInitialConnections; i++) { try { freeConnections.add(DriverManager.getConnection(url, user, password)); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * Gets the connection. * * @return the connection * * @throws SQLException * the SQL exception */ public static synchronized Connection getConnection() throws SQLException { Connection connection = null; if (freeConnections.isEmpty()) { connection = DriverManager.getConnection(url, user, password); } else { connection = freeConnections.remove(); } return connection; } /** * Release connection. * * @param connection * the connection */ public static synchronized void releaseConnection(Connection connection) { if (freeConnections.size() < numberOfInitialConnections) { freeConnections.add(connection); } else { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
Attention, les login et password doivent être définit pas des “properties” (cf System.setProperty()
). Ensuite, ils pourront être lus dans un fichier de configuration.
Pour finir
- Créer une interface
Entity
qui impose les méthodescreate
,remove
, etmerge
- Créer une classe qui spécialise la classe Chien en implante l’interface précédente et qui permet de
- Créer une instance de Chien
- D’invoquer
create
pour ajouter ce Chien dans la base de données - De modifier l’instance de Chien en mémoire (éventuellement plusieurs fois)
- De faire une mise à jour dans la base de données avec
merge
- Et finalement de supprimer le Chien avec remove.
- Implanter des méthodes qui permettent de retrouver et d’instancier un ou des Chiens :
- Chien findById(…)
- List<Chien> findByName(…), …
- En vous inspirant de cet exemple http://onjava.com/pub/a/onjava/excerpt/swinghks_hack24/index.html, créer une JTable qui permet d’afficher les Chiens contenus dans la base de données.