Skip to content

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 Eclipse:

  

Los proyectos Firebird mencionados anteriormente se encuentran en la carpeta [<exemples>/spring-database-config\firebird\eclipse].

Nota: ejecute [Alt-F5] para regenerar todos los proyectos Maven.

14.1.2. Generación de 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 apartado 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>

En lo que queda de guía, 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 apartado 23.10). Las bases de datos Firebird tienen la particularidad de que están 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 [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 análogo al proyecto de configuración [oracle-config-jdbc] de la capa JDBC del SGBD MySQL (véase el apartado 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 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 los identificadores 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 introducir 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 sobre 5000 productos que generarán [PreparedStatement] con 5000 parámetros. MySQL 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] ha pasado 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 análogo al proyecto de configuración [firebird-config-jpa-openjpa] de la capa JPA OpenJpa del SGBD Oracle (véase el apartado 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 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 Maven.

El proyecto [firebird-config-jpa-hibernate] es análogo al proyecto [oracle-config-jpa-hibernate] (apartado 10.4) con las mismas modificaciones que se aplicaron al portar [oracle-config-jpa-openjpa] al proyecto [firebird-config-jpa-openjpa] (apartado 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.

 

Nota: ejecute [Alt-F5] para regenerar todos los proyectos Maven.

El proyecto [firebird-config-jpa-eclipselink] es análogo al proyecto [oracle-config-jpa-eclipselink] (apartado 10.3) con las mismas modificaciones que se aplicaron al portar el [oracle-config-jpa-openjpa] al proyecto [firebird-config-jpa-openjpa] (apartado 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.