14. Firebird 2.5.4
Przechodzimy teraz do przeniesienia na Firebird 2.5.4 tego, co zostało zrobione w przypadku Oracle.
![]() |
14.1. Konfiguracja środowiska pracy
14.1.1. Środowisko Eclipse
Będziemy pracować w następującym środowisku Eclipse:
![]() |
Powyższe projekty Firebird znajdują się w folderze [<exemples>/spring-database-config\firebird\eclipse].
Uwaga: należy uruchomić [Alt-F5], aby ponownie wygenerować wszystkie projekty Maven.
14.1.2. Generowanie baz danych
Podobnie jak w przypadku Oracle, DB2 i SQL Server, będziemy musieli zainstalować sterownik Firebird o nazwie JDBC w lokalnym repozytorium Maven.
![]() |
Plik [install.bat] zawiera następujący kod:
"%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
gdzie [%M2-HOME%] to katalog instalacyjny Mavena (patrz punkt 23.2). Po tej instalacji sterownik Firebird o nazwie JDBC można odwołać w plikach [pom.xml] za pomocą następującej zależności:
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
W dalszej części połączenia z bazami danych Firebird będą nawiązywane przy użyciu danych logowania [sysdba / masterkey]. Uruchom Firebird oraz jego klienta [IBManager] (patrz punkt 23.10). Bazy danych Firebird wyróżniają się tym, że są zawarte w jednym pliku.
![]() | ![]() |
![]() |
- w [1], plik zostanie znaleziony w [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB];
![]() |
- podobnie jak w przypadku Oracle, klucze główne są generowane za pomocą sekwencji.
W ten sam sposób ładuje się bazę [dbproduitscategories], którą znajdziemy w pliku [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB]
![]() |
Teraz należy wykonać następujące konfiguracje:
- [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] ;
Wszystkie muszą zakończyć się powodzeniem.
14.2. Konfiguracja warstwy JDBC
![]() | ![]() |
Projekt [firebird-config-jdbc] konfiguruje warstwę [JDBC] w następującej architekturze testowej:
![]() |
Projekt ten jest analogiczny do projektu konfiguracyjnego [oracle-config-jdbc] warstwy JDBC w ramach SGBD MySQL (patrz punkt 10.2). Przedstawiamy jedynie zmiany:
Plik [pom.xml] importuje sterownik JDBC z Firebirda:
<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>
<!-- zmienne zależności ********************************************** -->
<!-- sterownik JDBC dla SGBD -->
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>2.2.7</version>
</dependency>
<!-- wymagany dla sterownika 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>
<!-- stałe zależności ********************************************** -->
...
</dependencies>
...
</project>
- wiersze 18–22: sterownik JDBC dla Firebirda;
- wiersze 24–33: zależności niezbędne dla sterownika JDBC dla Firebirda;
Druga zmiana dotyczy klasy [ConfigJdbc], która definiuje identyfikatory dostępu do baz danych:
// parametry połączenia
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";
- wiersze 3 i 6: należy podać dokładne ścieżki do obu baz danych;
Trzecią zmianą, którą można wprowadzić, jest zmiana maksymalnej liczby parametrów, jaką może obsłużyć [PreparedStatement]:
// maksymalna liczba parametrów dla [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
Test [JUnitTestPushTheLimits] generuje polecenia SQL dla 5000 produktów, które z kolei wygenerują pliki [PreparedStatement] zawierające 5000 parametrów. MySQL obsługiwał tę wartość. Firebird – nie.
Czwarta zmiana dotyczy słowa zastrzeżonego w Firebird-config-jdbc: PASSWORD. Kolumna [USERS.PASSWORD] została zatem przemianowana na [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. Konfiguracja warstwy JPA OpenJpa
![]() | ![]() |
Projekt [firebird-config-jpa-openjpa] konfiguruje warstwę [JPA] architektury testowej:
![]() |
Projekt ten jest analogiczny do projektu konfiguracyjnego [firebird-config-jpa-openjpa] warstwy JPA OpenJpa w Oracle SGBD (patrz paragraf 10.5). W rzeczywistości oba projekty SGBD wykorzystują sekwencje do generowania kluczy głównych. Należy wprowadzić tylko jedną zmianę. Znajduje się ona w definicji komponentu [jpaVendorAdapter] klasy [ConfigJpa]:
// dostawca JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- wiersz 6: informuje się implementację JPA, że będzie ona współpracować z nierozpoznanym SGBD. Implementacja JPA przejmie wówczas standardowe typy danych z SQL.
Po wprowadzeniu tych zmian uruchomienie konfiguracji [spring-jpa-generic-JUnitTestDao-openjpa] powinno zakończyć się powodzeniem.
![]() | ![]() |
14.4. Konfiguracja warstwy Hibernate JPA
![]() | ![]() |
Uwaga: należy wykonać polecenie [Alt-F5], aby ponownie wygenerować wszystkie projekty Maven.
Projekt [firebird-config-jpa-hibernate] jest analogiczny do projektu [oracle-config-jpa-hibernate] (punkt 10.4) i zawiera te same modyfikacje, które zastosowano podczas przenoszenia projektu [oracle-config-jpa-openjpa] do projektu [firebird-config-jpa-openjpa] (punkt 10.4).
Po wprowadzeniu tych zmian uruchomienie konfiguracji [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] powinno zakończyć się powodzeniem.
14.5. Konfiguracja warstwy JPA EclipseLink
![]() | ![]() |
Uwaga: należy uruchomić [Alt-F5], aby ponownie wygenerować wszystkie projekty Maven.
Projekt [firebird-config-jpa-eclipselink] jest analogiczny do projektu [oracle-config-jpa-eclipselink] (punkt 10.3) i zawiera te same modyfikacje, które miały zastosowanie przy przenoszeniu projektu [oracle-config-jpa-openjpa] do projektu [firebird-config-jpa-openjpa] (punkt 10.4).
Po wprowadzeniu tych zmian konfiguracja [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] powinna zakończyć się powodzeniem.



















