14. Firebird 2.5.4
ننتقل الآن إلى عملية الترحيل إلى Firebird 2.5.4 لما تم تنفيذه مع Oracle.
![]() |
14.1. إعداد بيئة العمل
14.1.1. بيئة Eclipse
سنعمل باستخدام بيئة Eclipse التالية:
![]() |
ستجد مشاريع Firebird المذكورة أعلاه في المجلد [<exemples>/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]، سيتم العثور على الملف في [<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] برنامج التشغيل JDBC الخاص بـ Firebird:
<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>
- الأسطر 18-22: برنامج التشغيل JDBC الخاص بـ Firebird؛
- الأسطر 24-33: التبعيات اللازمة لبرنامج التشغيل JDBC الخاص بـ Firebird؛
التعديل الثاني موجود في الفئة [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";
- السطران 3 و6: يجب إدخال المسارات الدقيقة لقاعدتي البيانات؛
التعديل الثالث الذي يمكن إجراؤه هو تعديل الحد الأقصى لعدد المعلمات التي يمكن أن يدعمها [PreparedStatement]:
// الحد الأقصى لعدد المعلمات في [PreparedStatement]
public final static int MAX_PREPAREDSTATEMENT_PARAMETERS = 1000;
يُنتج الاختبار [JUnitTestPushTheLimits] أوامر SQL على 5000 منتج، والتي ستُنتج بدورها ملفات [PreparedStatement] تحتوي على 5000 معلمة. وقد كان 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. تكوين الطبقة JPA OpenJpa
![]() | ![]() |
يقوم المشروع [firebird-config-jpa-openjpa] بتكوين الطبقة [JPA] في بنية الاختبارات:
![]() |
هذا المشروع مشابه لمشروع التهيئة [firebird-config-jpa-openjpa] للطبقة JPA OpenJpa في Oracle SGBD (انظر الفقرة 10.5). في الواقع، يستخدم كلا المشروعين SGBD تسلسلات لتوليد المفاتيح الأولية. ولا يوجد سوى تعديل واحد يجب إجراؤه. وهو موجود في تعريف البين [jpaVendorAdapter] الخاص بالفئة [ConfigJpa]:
// المزود JPA
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
OpenJpaVendorAdapter openJpaVendorAdapter = new OpenJpaVendorAdapter();
openJpaVendorAdapter.setShowSql(false);
openJpaVendorAdapter.setDatabase(Database.DEFAULT);
openJpaVendorAdapter.setGenerateDdl(true);
return openJpaVendorAdapter;
}
- السطر 6: يتم إعلام التنفيذ JPA بأنه سيعمل مع SGBD غير معترف به. وعندئذٍ سيتبنى التنفيذ 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].
14.5. تكوين الطبقة JPA 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].



















