Skip to content

14. Firebird 2.5.4

Wir werden nun die Portierung der für Oracle durchgeführten Schritte auf Firebird 2.5.4 behandeln.

14.1. Einrichten der Arbeitsumgebung

14.1.1. Eclipse-Umgebung

Wir werden mit der folgenden Eclipse-Umgebung arbeiten:

  

Die oben aufgeführten Firebird-Projekte befinden sich im Ordner [<examples>/spring-database-config\firebird\eclipse].

Hinweis: Drücken Sie [Alt-F5], um alle Maven-Projekte neu zu generieren.

14.1.2. Erstellen der Datenbanken

Wie bereits bei Oracle, DB2 und SQL Server müssen wir den Firebird-JDBC-Treiber im lokalen Maven-Repository installieren.

  

Die Datei [install.bat] enthält den folgenden Code:

"%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

wobei [%M2-HOME%] das Maven-Installationsverzeichnis ist (siehe Abschnitt 23.2). Nach dieser Installation kann der Firebird-JDBC-Treiber in den [pom.xml]-Dateien über die folgende Abhängigkeit referenziert werden:


        <dependency>
            <groupId>org.firebirdsql.jdbc</groupId>
            <artifactId>jaybird</artifactId>
            <version>2.2.7</version>
</dependency>

Ab hier werden Verbindungen zu Firebird-Datenbanken mit den Anmeldedaten [sysdba / masterkey] hergestellt. Starten Sie Firebird und dessen Client [IBManager] (siehe Abschnitt 23.10). Firebird-Datenbanken zeichnen sich dadurch aus, dass sie in einer einzigen Datei gekapselt sind.

  • In [1] befindet sich die Datei unter [<examples>\spring-database-config\firebird\databases\DBPRODUITS.GDB];
  • Wie bei Oracle werden Primärschlüssel mithilfe von Sequenzen generiert.

Auf dieselbe Weise laden wir die Datenbank [dbproduitscategories], die sich unter [<examples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB] befindet

  

Führen Sie nun die Konfigurationen aus:

  • [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];

Sie müssen alle bestehen.

14.2. Konfigurieren der JDBC-Schicht

 

Das Projekt [firebird-config-jdbc] konfiguriert die [JDBC]-Schicht der folgenden Testarchitektur:

Das Projekt entspricht dem Konfigurationsprojekt [oracle-config-jdbc] für die JDBC-Schicht des MySQL-DBMS (siehe Abschnitt 10.2). Wir stellen hier nur die Änderungen vor:

Die Datei [pom.xml] importiert den Firebird-JDBC-Treiber:


<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>
        <!-- dépendances variables ********************************************** -->
        <!-- driver JDBC from SGBD -->
        <dependency>
            <groupId>org.firebirdsql.jdbc</groupId>
            <artifactId>jaybird</artifactId>
            <version>2.2.7</version>
        </dependency>
        <!-- required for Firebird driver -->
        <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>
        <!-- dépendances constantes ********************************************** -->
        ...
    </dependencies>
...
</project>
  • Zeilen 18–22: der Firebird-JDBC-Treiber;
  • Zeilen 24–33: die für den Firebird-JDBC-Treiber erforderlichen Abhängigkeiten;

Die zweite Änderung betrifft die Klasse [ConfigJdbc], die die Datenbank-Anmeldedaten definiert:


    // paramètres de connexion
    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";
  • Zeilen 3 und 6: Sie müssen die genauen Pfade für beide Datenbanken eingeben;

Die dritte Änderung, die vorgenommen werden kann, betrifft die maximale Anzahl von Parametern, die ein [PreparedStatement] unterstützen kann:


    // max number of parameters of a [PreparedStatement]
    public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;

Der Test [JUnitTestPushTheLimits] generiert SQL-Anweisungen für 5.000 Produkte, wodurch [PreparedStatement]-Objekte mit 5.000 Parametern erzeugt werden. MySQL unterstützte diesen Wert. Firebird tat dies nicht.

Die vierte Änderung betrifft ein reserviertes Wort in Firebird-config-jdbc: PASSWORD. Die Spalte [USERS.PASSWORD] wurde daher in [USERS.PASSWD] umbenannt:


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. Konfigurieren der OpenJPA-JPA-Schicht

 

Das Projekt [firebird-config-jpa-openjpa] konfiguriert die [JPA]-Schicht der Testarchitektur:

Dieses Projekt ähnelt dem Konfigurationsprojekt [firebird-config-jpa-openjpa] für die OpenJPA-JPA-Schicht des Oracle-DBMS (siehe Abschnitt 10.5). Tatsächlich verwenden beide DBMS Sequenzen zur Generierung von Primärschlüsseln. Es ist nur eine Änderung vorzunehmen. Diese betrifft die Definition des Beans [jpaVendorAdapter] in der Klasse [ConfigJpa]:


    // the provider JPA
    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
        openJpaVendorAdapter.setShowSql(false);
        openJpaVendorAdapter.setDatabase(Database.DEFAULT);
        openJpaVendorAdapter.setGenerateDdl(true);
        return openJpaVendorAdapter;
}
  • Zeile 6: Wir teilen der JPA-Implementierung mit, dass sie mit einem nicht erkannten DBMS arbeiten wird. Die JPA-Implementierung wird dann Standard-SQL-Datentypen verwenden.

Nach diesen Änderungen sollte die Ausführung der Konfiguration [spring-jpa-generic-JUnitTestDao-openjpa] erfolgreich sein.

14.4. Konfiguration der Hibernate-JPA-Schicht

 

Hinweis: Drücken Sie [Alt-F5], um alle Maven-Projekte neu zu generieren.

Das Projekt [firebird-config-jpa-hibernate] entspricht dem Projekt [oracle-config-jpa-hibernate] (Abschnitt 10.4) und weist dieselben Änderungen auf, die zur Portierung des Projekts [oracle-config-jpa-openjpa] auf das Projekt [firebird-config-jpa-openjpa] (Abschnitt 10.4) verwendet wurden.

Mit diesen Änderungen sollte die Ausführung der Konfiguration [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] erfolgreich sein.

 

Hinweis: Drücken Sie [Alt-F5], um alle Maven-Projekte neu zu generieren.

Das Projekt [firebird-config-jpa-eclipselink] entspricht dem Projekt [oracle-config-jpa-eclipselink] (Abschnitt 10.3) und weist dieselben Änderungen auf, die zur Portierung des Projekts [oracle-config-jpa-openjpa] auf das Projekt [firebird-config-jpa-openjpa] (Abschnitt 10.4) verwendet wurden.

Mit diesen Änderungen sollte die Ausführung der Konfiguration [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] erfolgreich sein.