14. Firebird 2.5.4
Ahora abordamos la adaptación a Firebird 2.5.4 de lo que se ha hecho con Oracle.
![]() |
14.1. Configuración del entorno de trabajo
14.1.1. Entorno Eclipse
Trabajaremos con el siguiente entorno de Eclipse:
![]() |
Los proyectos de Firebird mencionados anteriormente se encuentran en la carpeta [<exemples>/spring-database-config\firebird\eclipse].
Nota: ejecuta [Alt-F5] para regenerar todos los proyectos de Maven.
14.1.2. Generación de las bases de datos
Al igual que se hizo con Oracle, DB2 y SQL Server, tendremos que instalar el controlador JDBC de Firebird en el repositorio local de Maven.
![]() |
El archivo [install.bat] contiene el siguiente código:
"%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
donde [%M2-HOME%] es la carpeta de instalación de Maven (véase el párrafo 23.2). Tras esta instalación, el controlador JDBC de Firebird puede referenciarse en los archivos [pom.xml] mediante la siguiente dependencia:
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
A partir de ahora, la conexión a las bases de datos Firebird se realiza con las credenciales [sysdba / masterkey]. Inicie Firebird y su cliente [IBManager] (véase el párrafo 23.10). Las bases de datos Firebird tienen la particularidad de estar encapsuladas en un único archivo.
![]() | ![]() |
![]() |
- en [1], el archivo se encontrará en [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB];
![]() |
- al igual que con Oracle, las claves primarias se generan mediante secuencias.
Se procede de la misma manera para cargar la base de datos [dbproduitscategories], que se encontrará en [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB]
![]() |
Ahora, ejecute las configuraciones:
- [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] ;
Todas deben tener éxito.
14.2. Configuración de la capa JDBC
![]() | ![]() |
El proyecto [firebird-config-jdbc] configura la capa [JDBC] de la siguiente arquitectura de pruebas:
![]() |
El proyecto es similar al proyecto de configuración [oracle-config-jdbc] de la capa JDBC del SGBD MySQL (véase el párrafo 10.2). Solo presentamos las modificaciones:
El archivo [pom.xml] importa el controlador 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>
<!-- dependencias variables ********************************************** -->
<!-- controlador JDBC del SGBD -->
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
<!-- necesario para el controlador de 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>
<!-- dependencias constantes ********************************************** -->
...
</dependencies>
...
</project>
- líneas 18-22: el controlador JDBC de Firebird;
- líneas 24-33: las dependencias necesarias para el controlador JDBC de Firebird;
La segunda modificación se encuentra en la clase [ConfigJdbc], que define las credenciales de acceso a las bases de datos:
// parámetros de conexión
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";
- líneas 3 y 6: hay que indicar las rutas exactas de las dos bases de datos;
La tercera modificación que se puede realizar es la del número máximo de parámetros que puede admitir un [PreparedStatement]:
// número máximo de parámetros de un [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
La prueba [JUnitTestPushTheLimits] genera órdenes SQL para 5000 productos, las cuales a su vez generarán [PreparedStatement] con 5000 parámetros. MySQL sí había soportado este valor. Firebird no.
La cuarta modificación se refiere a una palabra reservada de Firebird-config-jdbc: PASSWORD. Por lo tanto, la columna [USERS.PASSWORD] pasó a llamarse [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. Configuración de la capa JPA OpenJpa
![]() | ![]() |
El proyecto [firebird-config-jpa-openjpa] configura la capa [JPA] de la arquitectura de pruebas:
![]() |
El proyecto es similar al proyecto de configuración [firebird-config-jpa-openjpa] de la capa JPA OpenJpa de Oracle SGBD (véase el párrafo 10.5). De hecho, ambos SGBD utilizan secuencias para generar las claves primarias. Solo hay que realizar una modificación. Se encuentra en la definición del bean [jpaVendorAdapter] de la clase [ConfigJpa]:
// el proveedor JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- línea 6: se le indica a la implementación JPA que va a trabajar con un SGBD no reconocido. La implementación JPA adoptará entonces los tipos de datos estándar de SQL.
Una vez realizadas estas modificaciones, la ejecución de la configuración [spring-jpa-generic-JUnitTestDao-openjpa] debería completarse con éxito.
![]() | ![]() |
14.4. Configuración de la capa JPA de Hibernate
![]() | ![]() |
Nota: ejecute [Alt-F5] para regenerar todos los proyectos de Maven.
El proyecto [firebird-config-jpa-hibernate] es similar al proyecto [oracle-config-jpa-hibernate] (párrafo 10.4) y cuenta con las mismas modificaciones que se aplicaron al portar el proyecto [oracle-config-jpa-openjpa] al proyecto [firebird-config-jpa-openjpa] (párrafo 10.4).
Una vez realizadas estas modificaciones, la ejecución de la configuración [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] debería completarse con éxito.
14.5. Configuración de la capa JPA EclipseLink
![]() | ![]() |
Nota: ejecute [Alt-F5] para regenerar todos los proyectos de Maven.
El proyecto [firebird-config-jpa-eclipselink] es similar al proyecto [oracle-config-jpa-eclipselink] (párrafo 10.3) con las mismas modificaciones que se aplicaron al portar el proyecto [oracle-config-jpa-openjpa] al proyecto [firebird-config-jpa-openjpa] (párrafo 10.4).
Una vez realizadas estas modificaciones, la ejecución de la configuración [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] debería completarse con éxito.



















