Apache Derby, est une base de données relationnelle entièrement écrite en Java et disponible sous la licence Apache v2.0.
Quelques avantages de Derby sont les suivants:
- Derby est relativement légère — 2 Mo pour le moteur de la base et le driver JDBC embarqué.
- Derby est basé sur les standards Java, JDBC, et SQL.
- Derby fournit un driver JDBC embedded ce qui permet d’embarquer Derby dans n’importe quelle application Java.
- Derby supporte également le mode Client/Serveur avec le Derby Network Client JDBC driver and Derby Network Server.
- Derby est mature, robuste, performant.
- Derby est supporté : Derby est anciennement la base Cloudscape d’IBM, qui a laissé son code à la fondation Apache il y a un peu plus d’un an. Derby est embarqué dans le serveur d’application Geronimo d’Apache. Sun a combiné Apache Derby avec ses patches, et l’a renommé ‘Java DB’. Java DB est embarquée dans Sun Java System Portal Server 7.0, Java DB est la base de développement qu’on peut trouver dans Sun Java System Application Server , dans le container JEE5 en cours de développement, Glassfish, ainsi que dans l’IDE Netbeans 5.x.
- Avec Derby les données peuvent aller n’importe ou, du moment qu’il y a un runtime Java : navigateur Web, memory stick, laptop, serveur, PDA, mainframe.
Start Guide
System Requirements
Une plateforme avec la JVM de Sun installée.
Environnements dans lesquels Derby peut fonctionner
Mode embedded
Quand une application démarre une instance de Derby dans sa JVM, l’application tourne dans un environnement embedded. Le fait de charger le driver embedded démarre Derby.
Permettre un mode offline à des applications de mail ou de blog
Cache local
Mode Client/serveur
Un environnement client/serveur est un environnement dans lequel plusieurs applications peuvent se connecter à Derby via le réseau.
Derby tourne dans un framework serveur qui autorise des connexions réseau multiples. (Le framework démarre une instance de Derby et tourne dans un environnement embedded. Les applications clientes ne tournent pas dans l’environnement embedded. )
Downloader Derby
Downloader la base Derby a l’adresse http://db.apache.org/derby/derby_downloads.html .
La version courante est la 10.2.1.
Sur Windows, créer le répertoire C:/Apache et dezipper le fichier db-derby-10.2.1-bin.zip
Vous devriez retrouver le répertoire db-derby-10.2.1-bin contenant les répertoires suivants:
- demo : programmes demo.
- frameworks : contient des scripts pour exécuter des utilitaires et configurer l’environnement.
- javadoc : documentation des Apis générée depuis les commentaires du code source.
- doc: documentation Derby.
- lib: fichiers jar de Derby.
Configurer l’environnement:
Vérifier le PATH :
Dans une fenêtre de commande, taper :
> java -version
Vous devriez avoir la version de la JVM, par exemple :
java version “1.6.0-beta2″
Java(TM) SE Runtime Environment (build 1.6.0-beta2-b82)
Java HotSpot(TM) Client VM (build 1.6.0-beta2-b82, mixed mode, sharing)
DERBY_PATH
Créer une variable d’environnement appelée DERBY_INSTALL et la positionner sur le path du répertoire d’installation de Derby. Ceci va permettre d’utiliser les commandes pour les utilitaires Derby.
Exemple :
set DERBY_INSTALL=C:/Apache/db-derby-10.2.1-bin
CLASSPATH
Positionner le CLASSPATH pour inclure les fichiers derby.jar et derbytools.jar files. Par exemple:
> set CLASSPATH=%DERBY_INSTALL%/lib/derby.jar; %DERBY_INSTALL%/lib/derbytools.jar;%CLASSPATH%
Outils et utilitaires
Les outils Derby incluent dblook, ij, et sysinfo. Les utilitaires Derby incluent l’import/export.
Les scripts peuvent être trouvés dans le répertoire /frameworks/embedded/bin si on utilise Derby en mode embedded.
Les scripts peuvent être trouvés dans le répertoire /frameworks/NetworkServer/bin si on utilise Derby en mode client/serveur.
Vérifier Derby
En mode embedded, lancer la commande /frameworks/embedded/bin/sysinfo pour afficher les paramètres système de Derby :
Par exemple sur Windows:
C:\> cd %DERBY_INSTALL%\frameworks\embedded\bin C:\Apache\db-derby-10.2.1-bin\frameworks\embedded\bin> setEmbeddedCP.bat
java org.apache.derby.tools.sysinfo
C:\LOCAL\Apache\derby\frameworks\embedded\bin> java org.apache.derby.tools.sysinfo
—————— Java Information ——————
Java Version: 1.6.0-beta2
Java Vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jre1.6.0
Java classpath: C:\LOCAL\Apache\derby\lib\derby.jar;C:\LOCAL\Apache\derby\lib\d
erbytools.jar
OS name: Windows XP
OS architecture: x86
OS version: 5.1
Java user name: xxxxx
Java user home: C:\Documents and Settings\boil02a
Java user dir: C:\LOCAL\Apache\derby\frameworks\embedded\bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
——— Derby Information ——–
JRE – JDBC: J2SE 1.4.2 – JDBC 3.0
[C:\LOCAL\Apache\derby\lib\derby.jar] 10.1.2.1 – (330608)
[C:\LOCAL\Apache\derby\lib\derbytools.jar] 10.1.2.1 – (330608)
——————————————————
—————– Locale Information —————–
——————————————————
L’outil ij:
ij est un outil interactif de scripting SQL qui vient avec Derby. Il peut être utilisé avec le driver JDBC Derby Embedded ou avec le driver JDBC Client, tel que le Derby Network Client.
Démarrer ij :
> java org.apache.derby.tools.ij
On doit avoir la version courante de ij à l’écran :
ij version 10.1
Créer une base de données:
Cette section est valable pour Derby Embedded.
Se positionner dans le répertoire ou l’on veut que les fichiers de la database soient créés:
mkdir C:/DerbyData
cd C:/DerbyData
Pour créer la database, spécifier l’attribut create=true dans l’URL de connexion. Par exemple, la commande ci dessous crée un nouvelle database appelée MyDbTest:
C:/DerbyData> java org.apache.derby.tools.ij
ij>connect ‘jdbc:derby:MyDbTest;create=true’;
Quitter Derby:
ij>exit;
Lister le contenu du répertoire :
C:/DerbyData>dir
24/05/2006 12:15 derby.log
24/05/2006 12:15 MyDbTest
Se connecter à la base de données:
Pour se connecter à la base de données qu’on vient juste de créer :
C:/DerbyData> java org.apache.derby.tools.ij
ij> connect ‘jdbc:derby:MyDbTest’;
ij> exit;
On peut également passer le protocol ‘jdbc:derby’ en property de la commande et se connecter ainsi:
C:/DerbyData> java -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij
ij> connect ‘MyDbTest’;
Se connecter à la database MyDbTest, positionnée dans l’URL de connexion précédente, fonctionne car le répertoire de la database MyDbTest est le répertoire courant; c.à.d., le répertoire dans lequel on a démarré ij.
Maintenant connectons nous à la database depuis un répertoire différent (le répertoire de la database MyDbTest est C:/DerbyData):
> cd “C:/Documents and Settings/lbois”
C:/Documents and Settings/lbois> java org.apache.derby.tools.ij
ij> connect ‘jdbc:derby:C:/DerbyData/MyDbTest’;
On peut aussi spécifier le Derby System Home et se connecter ainsi:
C:/Documents and Settings/lbois> java org.apache.derby.tools.ij -Dderby.system.home=C:/DerbyData
ij> connect ‘jdbc:derby:MyDbTest’;
Ordres SQL
Une fois connecté, on peut exécuter des ordres SQL depuis ij. Chaque ordre doit se terminer par un point-virgule (;)
Par exemple:
Création d’une table
ij> create table derbyDB(num int, addr varchar(40));
0 rows inserted/updated/deleted
Insertion de données
ij> insert into derbyDB values (1956,’Webster St.’);
1 row inserted/updated/deleted
ij> insert into derbyDB values (1910,’Union St.’);
1 row inserted/updated/deleted
Mise à jour
ij> update derbyDB set num=180, addr=’Grand Ave.’ where num=1956;
1 row inserted/updated/deleted
Select
ij> select * from derbyDb;
NUM |ADDR
—————————————————-
180 |Grand Ave.
1910 |Union St.
2 rows selected
Scripts SQL:
Depuis ij:
ij> run ‘my_file.sql’;
A la ligne de commande :
java org.apache.derby.tools.ij my_file.sql
Se connecter à Derby depuis des programmes Java:
Mode embedded:
Charger le driver :
public String driver = “org.apache.derby.jdbc.EmbeddedDriver”;
…
Class.forName(driver).newInstance();
Se connecter à la base :
public String protocol = “jdbc:derby:”;
…
conn = DriverManager.getConnection(protocol + “derbyDB”, props);
Eteindre la base :
DriverManager.getConnection(“jdbc:derby:MyDbTest;shutdown=true”);
Mode Network Server:
Configurer l’environnement :
Avant de pouvoir démarrer ou arrêter le serveur, positionner les jars derby.jar et derbynet.jar dans le CLASSPATH.
C:\> cd %DERBY_INSTALL%\frameworks\NetworkServer\bin C:\Apache\db-derby-10.2.1-bin\frameworks\NetworkServer\bin> setNetworkServerCP.bat
Démarrer la base
Par défaut la base recherchée ou créée se situe dans le répertoire ou a été démarré le serveur.
Derby fournit des scripts pour démarrer / stopper la base, situés dans /frameworks/NetworkServer/bin : startNetworkServer.[bat|ksh] et stopNetworkServer.[bat|ksh]
Si nous voulons réutiliser la base MyDbTest créée précédemment, en mode Embedded, dans C:/DerbyData:
>cd C:/DerbyData
C:/DerbyData> %DERBY_INSTALL%/frameworks/NetworkServer/bin/startNetworkServer.bat
Le serveur est prêt à accepter les connexions au port 1527.
Tester la connection avec ij
Configurer l’environnement (nouvelle fenetre de commande) pour le client : inclure les jars derbyclient.jar et derbytools.jar (pour ij)
C:\Apache\db-derby-10.2.1-bin\frameworks\NetworkServer\bin> setNetworkClientCP.bat
> java org.apache.derby.tools.ij
ij> connect ‘jdbc:derby://localhost:1527/MyDbTest’;
On peut spécifier également un full path vers la base comme suit :
ij> connect ‘jdbc:derby://localhost:1527/C:/DerbyData/MyDbTest’;
Se connecter depuis un programme Java:
Charger le driver :
public String driver = “org.apache.derby.jdbc.ClientDriver”;
…
Class.forName(driver).newInstance();
Se connecter à la base :
public String protocol = “jdbc:derby://localhost:1527/”;
…
conn = DriverManager.getConnection(protocol + “MyDbTest”, props);
Autres lectures:
Derby supporte procédures, fonctions et trigger.
Exemple d’envoi de mail depuis la base : http://wiki.apache.org/db-derby/SendEmailRoutine
Articles, liens, ressources sur le Wiki :
http://wiki.apache.org/db-derby/
Ressources:

2 comments
Comments feed for this article
March 31, 2008 at 1:21 pm
Apache Derby (Java DB) : alternative à HSQLDB « Java Village
[...] Une introduction à Apache Derby [...]
December 1, 2008 at 3:52 am
Yves Joannette
Enfin votre aide m’a été très précieuse pour comprendre comment le serveur Derby fonctionne. tout ce que vous avez suggéré fonctionne bien sauf pour qqlque typo avec le / et \ dans windows à quelques endroits.
Merci de votre implication . Elle est simple et très pratique.