Skip to content

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.

 

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.