14. Firebird 2.5.4
Nous abordons maintenant le portage sur Firebird 2.5.4 de ce qui a été fait avec Oracle.
![]() |
14.1. Mise en place de l'environnement de travail
14.1.1. Environnement eclipse
Nous travaillerons avec l'environnement Eclipse suivant :
![]() |
Les projets Firebird ci-dessus seront trouvés dans le dossier [<exemples>/spring-database-config\firebird\eclipse].
Note : faire [Alt-F5] pour régénérer l'ensemble des projets Maven.
14.1.2. Génération des bases de données
Comme il a été fait avec Oracle, DB2, et SQL Server nous allons devoir installer le pilote JDBC de Firebird dans le dépôt Maven local.
![]() |
Le fichier [install.bat] contient le code suivant :
"%M2_HOME%\bin\mvn.bat" install:install-file -Dfile=jaybird-2.2.7.jar -Dpackaging=jar -DgroupId=org.firebirdsql.jdbc -DartifactId=jaybird -Dversion=2.2.7
où [%M2-HOME%] est le dossier d'installation de Maven (cf paragraphe 23.2). Après cette installation, le pilote JDBC de Firebird peut être référencé dans les fichiers [pom.xml] par la dépendance suivante :
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
Dans toute la suite, la connexion aux bases Firebird se font avec les identifiants [sysdba / masterkey]. Lancez Firebird et son client [IBManager] (cf paragraphe 23.10). Les bases de données firebird sont particulières en ce sens qu'elles sont encapsulées dans un unique fichier.
![]() | ![]() |
![]() |
- en [1], fichier sera trouvé en [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB] ;
![]() |
- comme avec Oracle, les clés primaires sont générées à l'aide de séquences.
On procède de la même façon pour charger la base [dbproduitscategories] qu'on trouvera en [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB]
![]() |
Maintenant, exécutez les configurations :
- [spring-jdbc-generic-01.IntroJdbc01] ;
- [spring-jdbc-generic-01.IntroJdbc02] ;
- [spring-jdbc-generic-03.JUnitTestDao1] ;
- [spring-jdbc-generic-03.JUnitTestDao2] ;
- [spring-jdbc-generic-04.JUnitTestDao] ;
- [spring-jpa-generic-JUnitTestDao-openjpa] ;
Elles doivent toutes réussir.
14.2. Configuration de la couche JDBC
![]() | ![]() |
Le projet [firebird-config-jdbc] configure la couche [JDBC] de l'architecture de tests suivante :
![]() |
Le projet est analogue au projet de configuration [oracle-config-jdbc] de la couche JDBC du SGBD MySQL (cf paragraphe 10.2). Nous ne présentons que les modifications :
Le fichier [pom.xml] importe le pilote JDBC de Firebird :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dvp.spring.database</groupId>
<artifactId>generic-config-jdbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>configuration generic jdbc</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<!-- dépendances variables ********************************************** -->
<!-- pilote JDBC du SGBD -->
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
<!-- nécessaire pour le driver Firebird -->
<dependency>
<groupId>javax.resource</groupId>
<artifactId>connector-api</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr-runtime</artifactId>
<version>3.5.2</version>
</dependency>
<!-- dépendances constantes ********************************************** -->
...
</dependencies>
...
</project>
- lignes 18-22 : le pilote JDBC de Firebird ;
- lignes 24-33 : les dépendances nécessaires au pilote JDBC de Firebird ;
La seconde modification est dans la classe [ConfigJdbc] qui définit les identifiants d'accès aux bases :
// paramètres de connexion
public final static String DRIVER_CLASSNAME = "org.firebirdsql.jdbc.FBDriver";
public final static String URL_DBPRODUITS = "jdbc:firebirdsql:localhost/3050:<exemples>/SPRING-DATABASE-CONFIG/FIREBIRD/DATABASES/DBPRODUITS.GDB";
public final static String USER_DBPRODUITS = "sysdba";
public final static String PASSWD_DBPRODUITS = "masterkey";
public final static String URL_DBPRODUITSCATEGORIES = "jdbc:firebirdsql:localhost/3050:<exemples>/SPRING-DATABASE-CONFIG/FIREBIRD/DATABASES/DBPRODUITSCATEGORIES.GDB";
public final static String USER_DBPRODUITSCATEGORIES = "sysdba";
public final static String PASSWD_DBPRODUITSCATEGORIES = "masterkey";
- lignes 3 et 6 : il faut mettre les chemins exacts des deux bases de données ;
La troisième modification qui peut être apportée est celle du nombre maximal de paramètres qu'un [PreparedStatement] peut supporter :
// nombre max de paramètres d'un [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
Le test [JUnitTestPushTheLimits] génère des ordres SQL sur 5000 produits qui vont générer des [PreparedStatement] avec 5000 paramètres. MySQL avait supporté cette valeur. Firebird non.
La quatrième modification concerne un mot réservé de Firebird-config-jdbc : PASSWORD. La colonne [USERS.PASSWORD] a donc été renommée [USERS.PASSWD] :
public final static String TAB_USERS_PASSWORD = "PASSWD";
public static final String SELECT_USER_BYLOGIN = "SELECT u.ID as u_ID, u.VERSIONING as u_VERSIONING, u.NAME as u_NAME,u.LOGIN as u_LOGIN,u.PASSWD as u_PASSWORD FROM USERS u WHERE u.LOGIN= :login";
14.3. Configuration de la couche JPA OpenJpa
![]() | ![]() |
Le projet [firebird-config-jpa-openjpa] configure la couche [JPA] de l'architecture de tests :
![]() |
Le projet est analogue au projet de configuration [firebird-config-jpa-openjpa] de la couche JPA OpenJpa du SGBD Oracle (cf paragraphe 10.5). En effet, les deux SGBD utilisent des séquences pour générer les clés primaires. Il n'y a qu'une modification à faire. Elle est dans la définition du bean [jpaVendorAdapter] de la classe [ConfigJpa] :
// le provider JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- ligne 6 : on indique à l'implémentation JPA qu'elle va travailler avec un SGBD non reconnu. L'implémentation JPA va alors adopter et les types de données standard du SQL.
Ces modifications faites, l'exécution de la configuration [spring-jpa-generic-JUnitTestDao-openjpa] doit réussir.
![]() | ![]() |
14.4. Configuration de la couche JPA Hibernate
![]() | ![]() |
Note : faire [Alt-F5] pour régénérer l'ensemble des projets Maven.
Le projet [firebird-config-jpa-hibernate] est analogue au projet [oracle-config-jpa-hibernate] (paragraphe 10.4) avec les mêmes modifications qui ont présidé au portage du [oracle-config-jpa-openjpa] vers le projet [firebird-config-jpa-openjpa] (paragraphe 10.4).
Ces modifications faites, l'exécution de la configuration [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] doit réussir.
14.5. Configuration de la couche JPA EclipseLink
![]() | ![]() |
Note : faire [Alt-F5] pour régénérer l'ensemble des projets Maven.
Le projet [firebird-config-jpa-eclipselink] est analogue au projet [oracle-config-jpa-eclipselink] (paragraphe 10.3) avec les mêmes modifications qui ont présidé au portage du [oracle-config-jpa-openjpa] vers le projet [firebird-config-jpa-openjpa] (paragraphe 10.4).
Ces modifications faites, l'exécution de la configuration [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] doit réussir.



















