Un SGBD en Java


Utiliser le SGBD Derby (JavaDb)

Décrit comment installer, configurer et utiliser le SGBD Derby.

Il y a de nombreux exemples d’applications qui ne demandent que l’utilisation d’une petite base de données. Dans ce cas on aimerait ne pas avoir à installer un serveur de base de données ni passer par de grosses procédures d’installation et également pouvoir se passer d’un DBA. Derby fait partie de ces petits SGBD   qui n’utilisent qu’une petite empreinte mémoire et qui peuvent être installés en mode embarqué. De plus, ce SGBD   a la particularité d’avoir été écrit totalement en Java, il est donc multiplateforme et vous n’aurez qu’un fichier .jar à ajouter lors de l’installation de votre application Java.


 1. Origine

Derby est un système de bases de données relationnelle de la fondation Apache sous licence OpenSource dont l’origine etait un projet d’IBM nommé Cloudscape. Ce SGBD   est également fourni par SUN dans son kit de développement Java ( depuis le JDK   6) mais également avec NetBeans et GlassFish. Dans ce cas, il se nomme JavaDB.

 2. Caractéristique de Derby

Derby a la particularité principale d’avoir été écrit entièrement en Java tout en fournissant les fonctionnalités d’un système de gestion de bases de données relationnelle complet avec implémentation du langage SQL  , gestion des transactions, triggers et procédures stockées.

Ce SGBD   est disponible sous les distributions suivantes :

  1. bin distribution : contient le SGBD au format .jar, la documentation et la javadoc des classes
  2. lib distribution : contient seulement le SGBD au format .jar
  3. src distribution : contient les sources du SGBD

Des plugins pour l’environnement de développement Eclipse sont également disponibles.
Derby inclue comme fonctionnalités, la possibilité d’être utilisée sous forme embarquée ou en mode client/serveur. Des utilitaires en lignes de commandes sont disponibles : ij pour exécuter des scripts SQL  , dblook pour les schémas de bases de données et sysinfo qui permet d’afficher des informations sur le système installé (JVM   + SGBD).

Remarque : Derby ayant été développé en Java, ce dernier est donc multiplateforme. Vous pourrez donc l’utiliser quelque soit l’OS. Il vous suffira simplement de fournir l’archive jar avec votre application java pour avoir une application base de données 100% portable et autonome.

 3. Récupération et installation des programmes

Si vous avez installé le JDK   6 de Sun, derby/javaDb devrait l’être aussi. Ce dernier se trouve par défaut, dans un sous répertoire du dossier d’installation nommé db.

Si vous désirez installer Apache-Derby sur un poste de production, la lib distribution fera l’affaire. Dans notre cas, nous allons récupérer l’archive bin distribution puisque nous allons l’installer sur un poste de développement. Cela nous permettra de disposer de la documentation et des utilitaires.

Récupérez sur le site l’archive db-derby-10.2.2.0-bin.zip dans un répertoire temporaire.

Décompressez avec la commande suivante :

Une fois l’archive décompressée, il ne vous reste plus qu’à déplacer le répertoire crée dans un répertoire d’installation. Personnellement, je vais le déplacer dans /opt. Pour cela, nous devons nous mettre en mode root avec la commande suivante :

Puis tapons la commande de déplacement :

Vous devriez normalement avoir l’arborescence suivante :

Si vous utilisez la version JavaDB fournie par Sun, vous devriez avoir dans le répertoire d’installation du JDK le dossier db comme le montre la capture suivante :

Le répertoires bin contient les principaux utilitaires à la fois sous forme de script shell pour les systèmes UNIX et sous forme de batch (*.bat) pour exécution dans un environnement Microsoft. Les principaux outils sont :

  • sysinfo : permet d’afficher des renseignements sur les versions
  • ij : outil qui permet de créer et gérer les bases de données en tapant par exemples des commandes SQL.

Le répertoire demo contient des programmes java et une base de données d’exemples.

Le répertoire docs contient différents manuels sur Derby au format HTML   et PDF.

Le répertoire javadoc contient la documentation au format Javadoc de l’API.

Le répertoire lib contient l’ensemble des fichiers .jar contenant les librairies Derby.

Les librairies les plus importantes sont :

derby.jar : (moteur de base de données) à installer avec toute application utilisant une base embarquée. En mode client/serveur, ce fichier n’est pas utile sur le poste client.

derbytools.jar : (classes utilitaires) à installer avec toute application utilisant une base embarquée. En mode client/serveur, uniquement sur le poste client. Indispensable pour utiliser les programmes utilitaires comme ij ou dblook.

derbynet.jar : (librairie de gestion du serveur). Indispensable pour démarrer le serveur.

derbyclient.jar : (librairie cliente). Contient le driver client.

A cela, s’ajoute un certains nombre de fichiers servant à la localisation comme le fichier derbyLocale_fr.jar.

 4. Configuration des variables d’environnements

Remarques : Derby étant écrit en java, pour utiliser ce dernier vous devrez avoir un runtime java de configuré sur votre machine.

Pour pouvoir utiliser les programmes utilitaires en ligne de commande fournis, vous devrez modifier vos variables d’environnements comme suit. Sous LINUX vous pourrez ajouter les lignes suivantes dans le fichier .bashrc ou .bash_profile de votre dossier home (rappel : ces fichiers sont cachés).

Dans l’exemple précédent on considère que le SGBD a été installé dans le répertoire opt/db-derby-10.2.2.0-bin. En ayant modifié le PATH, cela va vous permettre d’appeler les utilitaires derby depuis n’importe lequel de vos répertoires.

Si vous utilisez javadb votre paramétrage peu ressembler à cela :

Pour que la machine virtuelle puisse utiliser les classes contenue dans les packages derby vous devrez mettre à jour la variable CLASSPATH comme suit :

 5. Test de l’installation

Une fois enregistré la modification du fichier .bashrc et réouvert une console, tapez la commande sysinfo. Ce programme affiche les paramétrages et n° de versions de java et de Derby. Si vous avez correctement initialisé vos variables d’environnements vous devriez avoir un affichage ressemblant à celui-ci :

 6. Création d’une première base de données

Pour ce premier essai avec derby nous allons créer une base de données contenant une seule table. Cette base se nommera mediatheque et la table T_COMPOSITEURS_CMP.

Le plus simple est de se positionner dans le répertoire dans lequel nous désirons créer la base de données.

Dans ce répertoire, nous définissons le script qui servira à créer la table ainsi qu’à insérer quelques enregistrements de tests.

Créer le fichier script suivant chargé de créer une table avec quelques données de test :

  1. CREATE TABLE T_COMPOSITEURS_CMP
  2. (
  3.         CMP_ID     INT GENERATED ALWAYS AS IDENTITY,
  4.         CMP_NOM    VARCHAR( 40 ),
  5.         CMP_PRENOM VARCHAR( 40 ),
  6.         CMP_NEE    SMALLINT,
  7.         CMP_DECEDE SMALLINT
  8. );
  9.  
  10. INSERT INTO T_COMPOSITEURS_CMP
  11.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  12. VALUES
  13.         ( 'Fauré', 'Gabriel', 1875, 1937 );
  14.  
  15. INSERT INTO T_COMPOSITEURS_CMP
  16.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  17. VALUES
  18.         ( 'Monteverdi', 'Claudio', 1567, 1643 );
  19.  
  20. INSERT INTO T_COMPOSITEURS_CMP
  21.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  22. VALUES
  23.         ( 'Bernstein', 'Leonard', 1918, 1990 );
  24.  
  25. INSERT INTO T_COMPOSITEURS_CMP
  26.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  27. VALUES
  28.         ( 'Ravel', 'Maurice', 1875, 1937 );
  29.  
  30. INSERT INTO T_COMPOSITEURS_CMP
  31.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  32. VALUES
  33.         ( 'Mahler', 'Gustav', 1860, 1911 );
  34.  
  35. INSERT INTO T_COMPOSITEURS_CMP
  36.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  37. VALUES
  38.         ( 'Mozart', 'Wolfgang Amadeus', 1756, 1791 );
  39.                
  40. INSERT INTO T_COMPOSITEURS_CMP
  41.         ( CMP_NOM, CMP_PRENOM, CMP_NEE, CMP_DECEDE )
  42. VALUES
  43.         ( 'Bach', 'Johann Sebastian', 1685, 1750 );

Télécharger

Sauvegardez-le en lui donnant comme nom create_T_COMPOSITEURS_CMP.sql par exemple.

Il s’agit d’une syntaxe SQL standard sauf pour la définition du premier champ :


CMP_ID     INT GENERATED ALWAYS AS IDENTITY

Cette ligne indique que ce champ de type entier sera automatiquement généré par derby.

Nous pouvons maintenant créer la base. Pour cela, toujours en restant dans notre répertoire courant, nous exécutons l’utilitaire ij dans une console et nous tapons la commande de création de base de données.

Remarque : Pour qu’une commande soit exécuter par ij, vous ne devez pas oublier de taper " ;" en fin de ligne. Cela permet de taper des commandes sur plusieurs lignes.

Cette commande créé une base nommée mediatheque vide pour l’instant.

On peut constater, que cela a eu pour effet de créer un nouveau répertoire ainsi que des fichiers dans notre dossier courant.

Exécutons maintenant le script de création de la table :

Pour vérifier que que notre table existe bien, il suffit d’afficher son contenu avec une commande SELECT.

La base a bien été créée avec sa table.

 7. Utilisation avec une application Java

Si vous désirez créer une application Java utilisant une base de données Derby, vous ne devrez pas oublier de référencer les chemins des librairies de derby dans le classpath de l’application. Si vous utilisez une variable d’environnement vous devriez avoir une définition de ce type dans votre fichier de configuration :

CLASSPATH=.:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar

 8. Conclusion

La base de données Derby n’est pas réputée pour pour être très performante, donc ne contez pas dessus pour remplacer votre SGBD Oracle. Par contre, celle-ci pourrait vous être très utile dans de nombreux cas du fait qu’elle est écrite totalement en java et qu’elle peut être utilisé en mode embarqué. Donc, si vous désirez développer une application Java utilisant une petite base de données qui soit portable et qui puisse être utilisée sans avoir à installer un véritable serveur de bases de données, Derby peut être le bon choix. De plus, si vous désirez déplacer votre base de données, il vous suffira de déplacer ou effectuer une copie du répertoire dans lequel elle a été créée se qui simplifie les procédure d’installation.


Article n° 147

Crée par: chris

Créé le: 8 mai 2010

Modifié le: 1er novembre 2019

Nombre de visites: 474

Popularité: 10 %

Popularité absolue: 1


SPIP

2003-2024 LePpf
Plan du site | | RSS 2.0 | Sur YouTube

Visiteurs connectés : 2

Nombre moyen de visites quotidiennes sur le site: 202