Skip to content

14. Firebird 2.5.4

اکنون به انتقال کاری که با Oracle انجام شده به Firebird 2.5.4 می‌پردازیم.

14.1. راه‌اندازی محیط کاری

14.1.1. محیط اکلیپس

ما با محیط اکلیپس زیر کار خواهیم کرد:

  

پروژه‌های Firebird که در بالا فهرست شده‌اند را می‌توان در پوشه [<exemples>/spring-database-config\firebird\eclipse] یافت.

توجه: برای بازتولید مجدد تمام پروژه‌های Maven، [Alt-F5] را اجرا کنید.

14.1.2. ایجاد پایگاه داده

مانند Oracle، DB2 و SQL Server، باید درایور Firebird JDBC را در مخزن محلی Maven نصب کنیم.

  

فایل [install.bat] حاوی کد زیر است:

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

که در آن [%M2-HOME%] مسیر نصب Maven است (به بخش 23.2 مراجعه کنید). پس از این نصب، درایور Firebird JDBC را می‌توان از طریق وابستگی زیر در فایل‌های [pom.xml] ارجاع داد:


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

از این پس، اتصالات به پایگاه‌های داده Firebird با استفاده از اعتبارنامه‌های [sysdba / masterkey] انجام می‌شوند. Firebird و کلاینت آن [IBManager] را راه‌اندازی کنید (به بخش 23.10 مراجعه کنید). پایگاه‌های داده Firebird منحصر به فرد هستند زیرا در یک فایل واحد جای گرفته‌اند.

  • در [1]، فایل در [<exemples>\spring-database-config\firebird\databases\DBPRODUITS.GDB] یافت می‌شود؛
  • مانند Oracle، کلیدهای اصلی با استفاده از توالی‌ها تولید می‌شوند.

همان رویه برای بارگذاری پایگاه داده [dbproduitscategories] دنبال می‌شود که در [<exemples>\spring-database-config\firebird\databases\DBPRODUITSCATEGORIES.GDB] یافت می‌شود

  

اکنون، پیکربندی‌ها را اجرا کنید:

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

آنها همه باید موفق شوند.

14.2. پیکربندی لایه JDBC

 

پروژه [firebird-config-jdbc] لایه [JDBC] از معماری آزمایشی زیر را پیکربندی می‌کند:

این پروژه مشابه پروژه پیکربندی [oracle-config-jdbc] برای لایه JDBC از SGBD MySQL است (به بخش 10.2 مراجعه کنید). ما فقط تغییرات را ارائه می‌دهیم:

فایل [pom.xml] درایور Firebird JDBC را وارد می‌کند:


<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>
        <!--وابستگی‌های متغیر ********************************************** -->
        <!-- راننده JDBC برای SGBD -->
        <dependency>
            <groupId>org.firebirdsql.jdbc</groupId>
            <artifactId>jaybird</artifactId>
            <version>2.2.7</version>
        </dependency>
        <!-- برای درایور 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>
        <!--وابستگی‌های ثابت ********************************************** -->
        ...
    </dependencies>
...
</project>
  • خطوط ۱۸–۲۲: درایور Firebird JDBC;
  • خطوط ۲۴–۳۳: وابستگی‌های مورد نیاز برای درایور Firebird JDBC;

تغییر دوم در کلاس [ConfigJdbc] است که اعتبارنامه‌های دسترسی به پایگاه داده را تعریف می‌کند:


    //پارامترهای اتصال
    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";
  • خطوط ۳ و ۶: مسیرهای دقیق به دو پایگاه داده باید مشخص شوند؛

سومین تغییری که می‌توان انجام داد مربوط به حداکثر تعداد پارامترهایی است که یک [PreparedStatement] می‌تواند پشتیبانی کند:


    // حداکثر تعداد پارامترها برای [PreparedStatement]
    public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;

آزمون [JUnitTestPushTheLimits] سفارش‌های SQL را برای ۵۰۰۰ محصول تولید می‌کند که به نوبه خود فایل‌های [PreparedStatement] را با ۵۰۰۰ پارامتر تولید خواهند کرد. MySQL قادر به مدیریت این مقدار بود. فایربرد این کار را انجام نمی‌دهد.

چهارمین تغییر مربوط به یک کلمهٔ محفوظ در Firebird-config-jdbc است: PASSWORD. بنابراین ستون [USERS.PASSWORD] به [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. پیکربندی لایه JPA OpenJpa

 

پروژه [firebird-config-jpa-openjpa] لایه [JPA] از معماری تست را پیکربندی می‌کند:

این پروژه مشابه پروژه پیکربندی [firebird-config-jpa-openjpa] برای لایه‌های JPA و OpenJpa در Oracle SGBD است (به بخش 10.5 مراجعه کنید). در واقع، هر دو پروژه SGBD از توالی‌ها برای تولید کلیدهای اصلی استفاده می‌کنند. تنها یک تغییر باید انجام شود. این تغییر در تعریف bean [jpaVendorAdapter] از کلاس [ConfigJpa] است:


    // ارائه‌دهنده JPA
    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
        openJpaVendorAdapter.setShowSql(false);
        openJpaVendorAdapter.setDatabase(Database.DEFAULT);
        openJpaVendorAdapter.setGenerateDdl(true);
        return openJpaVendorAdapter;
}
  • خط ۶: به پیاده‌سازی JPA دستور داده شده است که با یک SGBD ناشناخته کار خواهد کرد. پیاده‌سازی JPA سپس انواع داده‌ی استاندارد را از SQL اتخاذ خواهد کرد.

پس از اعمال این تغییرات، اجرای پیکربندی [spring-jpa-generic-JUnitTestDao-openjpa] باید با موفقیت انجام شود.

14.4. پیکربندی لایه Hibernate JPA

 

توجه: برای بازتولید تمام پروژه‌های Maven، [Alt-F5] را اجرا کنید.

پروژه [firebird-config-jpa-hibernate] مشابه پروژه [oracle-config-jpa-hibernate] است (بخش 10.4) با همان اصلاحاتی که برای انتقال [oracle-config-jpa-openjpa] به پروژه [firebird-config-jpa-openjpa] (بخش 10.4) استفاده شد.

با اعمال این تغییرات، اجرای پیکربندی [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] باید موفقیت‌آمیز باشد.

 

توجه: برای بازتولید مجدد تمام پروژه‌های Maven، [Alt-F5] را اجرا کنید.

پروژه [firebird-config-jpa-eclipselink] مشابه پروژه [oracle-config-jpa-eclipselink] (بخش 10.3) است با همان اصلاحاتی که برای انتقال [oracle-config-jpa-openjpa] به پروژه [firebird-config-jpa-openjpa] (بخش 10.4) استفاده شد.

با اعمال این تغییرات، اجرای پیکربندی [spring-jpa-generic-JUnitTestDao-hibernate-eclipselink] باید با موفقیت انجام شود.