Skip to content

14. Firebird 2.5.4

Şimdi, Oracle ile yapılanların Firebird 2.5.4'e taşınmasına geçiyoruz.

14.1. Çalışma ortamının kurulması

14.1.1. Eclipse ortamı

Aşağıdaki Eclipse ortamında çalışacağız:

  

Yukarıdaki Firebird projeleri [<exemples>/spring-database-config\firebird\eclipse] klasöründe bulunur.

Not: Tüm Maven projelerini yeniden oluşturmak için [Alt-F5] komutunu çalıştırın.

14.1.2. Veritabanlarının Oluşturulması

Oracle, DB2 ve SQL Server'da olduğu gibi, Firebird'ün JDBC sürücüsünü yerel Maven deposuna yüklememiz gerekecektir.

  

[install.bat] dosyası aşağıdaki kodu içerir:

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

burada [%M2-HOME%], Maven kurulum klasörüdür (bkz. paragraf 23.2). Bu kurulumdan sonra, Firebird'ün JDBC sürücüsü, [pom.xml] dosyalarında aşağıdaki bağımlılıkla referanslanabilir:


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

Bundan sonra, Firebird veritabanlarına bağlantı [sysdba / masterkey] kimlik bilgileriyle kurulur. Firebird'ü ve [IBManager] istemcisini başlatın (bkz. paragraf 23.10). Firebird veritabanları, tek bir dosya içinde kapsüllenmiş olmaları bakımından özeldir.

  • [1]'te, dosya [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB]'te bulunacaktır;
  • Oracle'da olduğu gibi, birincil anahtarlar sıra numaraları kullanılarak oluşturulur.

Aynı şekilde, [dbproduitscategories] veritabanını yüklemek için de aynı işlem yapılır; bu veritabanı [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB] konumunda bulunur

  

Şimdi yapılandırmaları çalıştırın:

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

Hepsi başarılı olmalı.

14.2. JDBC katmanının yapılandırılması

 

[firebird-config-jdbc] projesi, aşağıdaki test mimarisinin [JDBC] katmanını yapılandırır:

Bu proje, SGBD MySQL'in JDBC katmanına ait [oracle-config-jdbc] yapılandırma projesine benzemektedir (bkz. paragraf 10.2). Burada yalnızca değişiklikleri sunuyoruz:

[pom.xml] dosyası, Firebird’ün JDBC sürücüsünü içe aktarır:


<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>
        <!-- değişken bağımlılıklar ********************************************** -->
        <!-- SGBD sürücüsü için JDBC -->
        <dependency>
            <groupId>org.firebirdsql.jdbc</groupId>
            <artifactId>jaybird</artifactId>
            <version>2.2.7</version>
        </dependency>
        <!-- Firebird sürücüsü için gereklidir -->
        <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>
        <!-- sabit bağımlılıklar ********************************************** -->
        ...
    </dependencies>
...
</project>
  • 18-22. satırlar: Firebird'ün JDBC sürücüsü;
  • 24-33. satırlar: Firebird'ün JDBC sürücüsü için gerekli bağımlılıklar;

İkinci değişiklik, veritabanlarına erişim kimliklerini tanımlayan [ConfigJdbc] sınıfındadır:


    // bağlantı parametreleri
    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";
  • 3. ve 6. satırlar: iki veritabanının tam yollarını girmek gerekir;

Yapılabilecek üçüncü değişiklik, bir [PreparedStatement]'in destekleyebileceği maksimum parametre sayısıyla ilgilidir:


    // bir [PreparedStatement]'in maksimum parametre sayısı
    public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;

[JUnitTestPushTheLimits] testi, 5000 ürün üzerinde SQL emirleri oluşturur ve bunlar da 5000 parametre içeren [PreparedStatement] dosyalarını oluşturur. MySQL bu değeri desteklemişti. Firebird ise desteklemiyordu.

Dördüncü değişiklik, Firebird-config-jdbc'nin bir ayrılmış kelimesiyle ilgilidir: PASSWORD. Bu nedenle [USERS.PASSWORD] sütunu, [USERS.PASSWD] olarak yeniden adlandırılmıştır:


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. JPA katmanının yapılandırılması OpenJpa

 

[firebird-config-jpa-openjpa] projesi, test mimarisinin [JPA] katmanını yapılandırır:

Bu proje, Oracle'ın SGBD katmanındaki JPA ve OpenJpa katmanlarının [firebird-config-jpa-openjpa] yapılandırma projesine benzerdir (bkz. paragraf 10.5). Aslında, her iki SGBD de birincil anahtarları oluşturmak için diziler kullanır. Yapılması gereken tek bir değişiklik vardır. Bu değişiklik, [ConfigJpa] sınıfının [jpaVendorAdapter] bean tanımında yer almaktadır:


    // JPA sağlayıcısı
    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
        openJpaVendorAdapter.setShowSql(false);
        openJpaVendorAdapter.setDatabase(Database.DEFAULT);
        openJpaVendorAdapter.setGenerateDdl(true);
        return openJpaVendorAdapter;
}
  • 6. satır: JPA uygulamasına, tanınmayan bir SGBD ile çalışacağı belirtilir. JPA uygulaması, bu durumda SQL'in standart veri türlerini de benimseyecektir.

Bu değişiklikler yapıldıktan sonra, [spring-jpa-generic-JUnitTestDao-openjpa] yapılandırmasının yürütülmesi başarılı olmalıdır.

14.4. JPA Hibernate katmanının yapılandırılması

 

Not: Tüm Maven projelerini yeniden oluşturmak için [Alt-F5] komutunu çalıştırın.

[firebird-config-jpa-hibernate] projesi, [oracle-config-jpa-hibernate] (10.4. paragraf) ile aynıdır ve [oracle-config-jpa-openjpa] projesinin [firebird-config-jpa-openjpa] projesine taşınmasında yapılan değişikliklerin aynısı bu projede de uygulanmıştır (10.4. paragraf).

Bu değişiklikler yapıldıktan sonra, [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] yapılandırmasının çalıştırılması başarılı olmalıdır.

 

Not: Tüm Maven projelerini yeniden oluşturmak için [Alt-F5] komutunu çalıştırın.

[firebird-config-jpa-eclipselink] projesi, [oracle-config-jpa-eclipselink] projesine (10.3. paragraf) ve [oracle-config-jpa-openjpa] projesinin [firebird-config-jpa-openjpa] projesine taşınmasında (10.4. paragraf) uygulanan değişikliklerin aynısı bu projede de geçerlidir.

Bu değişiklikler yapıldıktan sonra, [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] yapılandırmasının çalıştırılması başarılı olmalıdır.