14. Firebird 2.5.4
Affronteremo ora il porting su Firebird 2.5.4 di quanto fatto con Oracle.
![]() |
14.1. Configurazione dell'ambiente di lavoro
14.1.1. Ambiente Eclipse
Lavoreremo con il seguente ambiente Eclipse:
![]() |
I progetti Firebird sopra elencati si trovano nella cartella [<examples>/spring-database-config\firebird\eclipse].
Nota: premere [Alt-F5] per rigenerare tutti i progetti Maven.
14.1.2. Generazione dei database
Come abbiamo fatto con Oracle, DB2 e SQL Server, dovremo installare il driver JDBC di Firebird nel repository Maven locale.
![]() |
Il file [install.bat] contiene il seguente codice:
"%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
dove [%M2-HOME%] è la directory di installazione di Maven (vedere la sezione 23.2). Dopo questa installazione, è possibile fare riferimento al driver JDBC di Firebird nei file [pom.xml] utilizzando la seguente dipendenza:
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
Da questo punto in poi, le connessioni ai database Firebird vengono effettuate utilizzando le credenziali [sysdba / masterkey]. Avviare Firebird e il suo client [IBManager] (vedere la sezione 23.10). I database Firebird sono unici in quanto incapsulati in un unico file.
![]() | ![]() |
![]() |
- In [1], il file si trova in [<examples>\spring-database-config\firebird\databases\DBPRODUITS.GDB];
![]() |
- Come per Oracle, le chiavi primarie vengono generate utilizzando sequenze.
Procediamo allo stesso modo per caricare il database [dbproduitscategories], che si trova in [<examples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB]
![]() |
Ora, esegui le configurazioni:
- [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];
Devono superare tutti i test.
14.2. Configurazione del livello JDBC
![]() | ![]() |
Il progetto [firebird-config-jdbc] configura il livello [JDBC] della seguente architettura di test:
![]() |
Il progetto è analogo al progetto di configurazione [oracle-config-jdbc] per il livello JDBC del DBMS MySQL (vedere la Sezione 10.2). Presentiamo solo le modifiche:
Il file [pom.xml] importa il driver JDBC di 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 ********************************************** -->
<!-- driver JDBC from SGBD -->
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
<!-- required for Firebird driver -->
<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>
- righe 18–22: il driver JDBC di Firebird;
- righe 24–33: le dipendenze richieste per il driver JDBC di Firebird;
La seconda modifica riguarda la classe [ConfigJdbc], che definisce le credenziali del database:
// 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";
- Righe 3 e 6: è necessario inserire i percorsi esatti per entrambi i database;
La terza modifica che è possibile apportare riguarda il numero massimo di parametri che un [PreparedStatement] può supportare:
// max number of parameters of a [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
Il test [JUnitTestPushTheLimits] genera istruzioni SQL per 5.000 prodotti, il che genererà oggetti [PreparedStatement] con 5.000 parametri. MySQL supportava questo valore. Firebird no.
La quarta modifica riguarda una parola riservata in Firebird-config-jdbc: PASSWORD. La colonna [USERS.PASSWORD] è stata quindi rinominata [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. Configurazione del livello JPA di OpenJPA
![]() | ![]() |
Il progetto [firebird-config-jpa-openjpa] configura il livello [JPA] dell'architettura di test:
![]() |
Questo progetto è simile al progetto di configurazione [firebird-config-jpa-openjpa] per il livello JPA OpenJPA del DBMS Oracle (vedere la Sezione 10.5). Infatti, entrambi i DBMS utilizzano sequenze per generare le chiavi primarie. C'è solo una modifica da apportare. Si trova nella definizione del bean [jpaVendorAdapter] nella classe [ConfigJpa]:
// the provider JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- Riga 6: Indichiamo all'implementazione JPA che lavorerà con un DBMS non riconosciuto. L'implementazione JPA adotterà quindi i tipi di dati SQL standard.
Una volta apportate queste modifiche, l'esecuzione della configurazione [spring-jpa-generic-JUnitTestDao-openjpa] dovrebbe avere esito positivo.
![]() | ![]() |
14.4. Configurazione del livello JPA di Hibernate
![]() | ![]() |
Nota: premere [Alt-F5] per rigenerare tutti i progetti Maven.
Il progetto [firebird-config-jpa-hibernate] è analogo al progetto [oracle-config-jpa-hibernate] (Sezione 10.4) con le stesse modifiche utilizzate per portare il progetto [oracle-config-jpa-openjpa] al progetto [firebird-config-jpa-openjpa] (Sezione 10.4).
Una volta apportate queste modifiche, l'esecuzione della configurazione [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] dovrebbe avere esito positivo.
14.5. Configurazione del livello JPA di EclipseLink
![]() | ![]() |
Nota: premere [Alt-F5] per rigenerare tutti i progetti Maven.
Il progetto [firebird-config-jpa-eclipselink] è analogo al progetto [oracle-config-jpa-eclipselink] (Sezione 10.3) con le stesse modifiche utilizzate per portare il progetto [oracle-config-jpa-openjpa] al progetto [firebird-config-jpa-openjpa] (Sezione 10.4).
Una volta apportate queste modifiche, l'esecuzione della configurazione [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] dovrebbe avere esito positivo.



















