Skip to content

14. Firebird 2.5.4

سنقوم الآن بمعالجة نقل ما تم تنفيذه مع Oracle إلى Firebird 2.5.4.

14.1. إعداد بيئة العمل

14.1.1. بيئة Eclipse

سنعمل باستخدام بيئة Eclipse التالية:

  

يمكن العثور على مشاريع Firebird المذكورة أعلاه في المجلد [<examples>/spring-database-config\firebird\eclipse].

ملاحظة: اضغط على [Alt-F5] لإعادة إنشاء جميع مشاريع Maven.

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]، يمكن العثور على الملف في [<examples>\spring-database-config\firebird\databases\DBPRODUITS.GDB
  • وكما هو الحال مع Oracle، يتم إنشاء المفاتيح الأساسية باستخدام التسلسلات.

ونقوم بنفس الطريقة لتحميل قاعدة البيانات [dbproduitscategories]، والتي يمكن العثور عليها في [<examples>\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 لنظام إدارة قواعد البيانات 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>
        <!-- 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>
  • الأسطر 18–22: برنامج تشغيل Firebird JDBC؛
  • الأسطر 24–33: التبعيات المطلوبة لمحرك Firebird JDBC؛

التغيير الثاني في فئة [ConfigJdbc]، التي تحدد بيانات اعتماد قاعدة البيانات:


    // 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";
  • السطران 3 و 6: يجب إدخال المسارات الدقيقة لكلتا قاعدتي البيانات؛

التعديل الثالث الذي يمكن إجراؤه هو تعديل الحد الأقصى لعدد المعلمات التي يمكن أن يدعمها [PreparedStatement]:


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

يُنشئ اختبار [JUnitTestPushTheLimits] عبارات SQL لـ 5,000 منتج، مما سيؤدي إلى إنشاء كائنات [PreparedStatement] تحتوي على 5,000 معلمة. وقد دعم MySQL هذه القيمة، بينما لم يدعمها Firebird.

يتعلق التغيير الرابع بكلمة محجوزة في 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. تكوين طبقة OpenJPA JPA

 

يقوم مشروع [firebird-config-jpa-openjpa] بتكوين طبقة [JPA] في بنية الاختبار:

يشبه هذا المشروع مشروع التكوين [firebird-config-jpa-openjpa] الخاص بطبقة OpenJPA JPA لنظام إدارة قواعد البيانات Oracle (انظر القسم 10.5). في الواقع، يستخدم كلا نظامي إدارة قواعد البيانات التسلسلات لإنشاء المفاتيح الأساسية. هناك تغيير واحد فقط يجب إجراؤه. وهو في تعريف حبة [jpaVendorAdapter] في فئة [ConfigJpa]:


    // the provider JPA
    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
        openJpaVendorAdapter.setShowSql(false);
        openJpaVendorAdapter.setDatabase(Database.DEFAULT);
        openJpaVendorAdapter.setGenerateDdl(true);
        return openJpaVendorAdapter;
}
  • السطر 6: نخبر تطبيق JPA أنه سيعمل مع نظام إدارة قواعد بيانات غير معروف. سيقوم تطبيق JPA بعد ذلك بتبني أنواع بيانات SQL القياسية.

بعد إجراء هذه التغييرات، من المفترض أن ينجح تنفيذ تكوين [spring-jpa-generic-JUnitTestDao-openjpa].

14.4. تكوين طبقة Hibernate JPA

 

ملاحظة: اضغط على [Alt-F5] لإعادة إنشاء جميع مشاريع Maven.

مشروع [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].

 

ملاحظة: اضغط على [Alt-F5] لإعادة إنشاء جميع مشاريع Maven.

مشروع [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].