14. Firebird 2.5.4
Passamos agora à adaptação para o Firebird 2.5.4 do que foi feito com o Oracle.
![]() |
14.1. Configuração do ambiente de trabalho
14.1.1. Ambiente Eclipse
Iremos trabalhar com o seguinte ambiente Eclipse:
![]() |
Os projetos Firebird acima referidos encontram-se na pasta [<exemples>/spring-database-config\firebird\eclipse].
Nota: execute o comando [Alt-F5] para regenerar todos os projetos Maven.
14.1.2. Geração das bases de dados
Tal como foi feito com o Oracle, o DB2 e o SQL Server, teremos de instalar o controlador JDBC do Firebird no repositório Maven local.
![]() |
O ficheiro [install.bat] contém o seguinte 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
onde [%M2-HOME%] é a pasta de instalação do Maven (ver parágrafo 23.2). Após esta instalação, o controlador JDBC do Firebird pode ser referenciado nos ficheiros [pom.xml] através da seguinte dependência:
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
A partir daqui, a ligação às bases de dados Firebird é feita com as credenciais [sysdba / masterkey]. Inicie o Firebird e o seu cliente [IBManager] (ver parágrafo 23.10). As bases de dados Firebird têm a particularidade de estarem encapsuladas num único ficheiro.
![]() | ![]() |
![]() |
- em [1], o ficheiro será encontrado em [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB];
![]() |
- tal como no Oracle, as chaves primárias são geradas utilizando sequências.
Procedemos da mesma forma para carregar a base de dados [dbproduitscategories], que se encontrará em [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB]
![]() |
Agora, execute as configurações:
- [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 elas têm de ser bem-sucedidas.
14.2. Configuração da camada JDBC
![]() | ![]() |
O projeto [firebird-config-jdbc] configura a camada [JDBC] da seguinte arquitetura de testes:
![]() |
O projeto é análogo ao projeto de configuração [oracle-config-jdbc] da camada JDBC do SGBD MySQL (ver parágrafo 10.2). Apresentamos apenas as alterações:
O ficheiro [pom.xml] importa o controlador JDBC do 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>
<!-- dependências variáveis ********************************************** -->
<!-- driver JDBC do SGBD -->
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
<!-- necessário para o 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>
<!-- dependências constantes ********************************************** -->
...
</dependencies>
...
</project>
- linhas 18-22: o controlador JDBC do Firebird;
- linhas 24-33: as dependências necessárias para o controlador JDBC do Firebird;
A segunda alteração encontra-se na classe [ConfigJdbc], que define os identificadores de acesso às bases de dados:
// parâmetros de ligação
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";
- linhas 3 e 6: é necessário indicar os caminhos exatos das duas bases de dados;
A terceira alteração que pode ser feita diz respeito ao número máximo de parâmetros que um [PreparedStatement] pode suportar:
// número máximo de parâmetros de um [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
O teste [JUnitTestPushTheLimits] gera ordens SQL para 5000 produtos, que, por sua vez, irão gerar [PreparedStatement] com 5000 parâmetros. O MySQL suportava este valor. O Firebird, não.
A quarta alteração diz respeito a uma palavra reservada do Firebird-config-jdbc: PASSWORD. A coluna [USERS.PASSWORD] foi, portanto, renomeada para [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. Configuração da camada JPA OpenJpa
![]() | ![]() |
O projeto [firebird-config-jpa-openjpa] configura a camada [JPA] da arquitetura de testes:
![]() |
O projeto é análogo ao projeto de configuração [firebird-config-jpa-openjpa] da camada JPA OpenJpa do SGBD Oracle (ver parágrafo 10.5). Com efeito, ambos os SGBD utilizam sequências para gerar as chaves primárias. Há apenas uma alteração a efetuar. Esta encontra-se na definição do bean [jpaVendorAdapter] da classe [ConfigJpa]:
// o provedor JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- linha 6: indica-se à implementação JPA que irá trabalhar com um SGBD não reconhecido. A implementação JPA irá então adotar os tipos de dados padrão do SQL.
Após estas alterações, a execução da configuração [spring-jpa-generic-JUnitTestDao-openjpa] deverá ser bem-sucedida.
![]() | ![]() |
14.4. Configuração da camada JPA do Hibernate
![]() | ![]() |
Nota: execute o comando [Alt-F5] para regenerar todos os projetos Maven.
O projeto [firebird-config-jpa-hibernate] é análogo ao projeto [oracle-config-jpa-hibernate] (parágrafo 10.4), com as mesmas alterações que estiveram na base da migração do [oracle-config-jpa-openjpa] para o projeto [firebird-config-jpa-openjpa] (parágrafo 10.4).
Após estas alterações, a execução da configuração [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] deverá ser bem-sucedida.
14.5. Configuração da camada JPA EclipseLink
![]() | ![]() |
Nota: execute o [Alt-F5] para regenerar todos os projetos Maven.
O projeto [firebird-config-jpa-eclipselink] é análogo ao projeto [oracle-config-jpa-eclipselink] (parágrafo 10.3) com as mesmas alterações que estiveram na base da migração do [oracle-config-jpa-openjpa] para o projeto [firebird-config-jpa-openjpa] (parágrafo 10.4).
Após estas alterações, a execução da configuração [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] deverá ser bem-sucedida.



















