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. Конфігурація шару JPA Hibernate
![]() | ![]() |
Примітка: виконайте команду [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] має пройти успішно.



















