Firebird はオープンソースで利用できるリレーショナルデータベースです。ここでは Firebird 利用時の注意点を示します。8.4.1

対応バージョン

2.5系と3.0系に対応しています。

JDBCドライバ

FirebirdのJDBCドライバは、Jaybird 3.0をダウンロードしてお使いください。2.5/3 系いずれも利用できます。
https://www.firebirdsql.org/en/jdbc-driver/

ダウンロードしたファイルを展開します。下記の4つのファイルが含まれています。

jaybird-3.0.7.jar
lib/connector-api-1.5.jar
lib/antlr-runtime-4.7.jar
lib/jna-4.4.0.jar

このファイルをcutomize/tomcat/lib にコピーしてください。

lib/はlibフォルダ内のファイルを示します。
ファイル名内の数字は取得したバージョンにより異なります。

注意点

  • デフォルトキャラクターセットをUTF8としてください。
  • データベース作成時、一意制約や主キーのサイズのため、page_sizeに16384を指定してください。https://firebirdsql.org/refdocs/langrefupd25-ddl-index.html
    CREATE DATABASE 'C:\work\fbtest\WAGBYDB.FDB' USER 'SYSDBA' PASSWORD 'XXX' page_size 16384 DEFAULT CHARACTER SET UTF8;
  • 上の CREATE DATABASE でデータベースを作成したとき、接続URLは次のようになります。
    jdbc:firebirdsql://localhost/C:/work/fbtest/WAGBYDB.FDB?charSet=UTF-8
  • 上の CREATE DATABASE ではデータベース名にファイルパスを指定しているが、Firebird の Database Alias の機能を使うことでファイルパスでなくエイリアス名で指定することができます。https://firebirdsql.org/rlsnotesh/config-db-alias.html
  • テーブル名(Wagbyのモデル名)の最大長は 31 文字です。
  • カラム名(Wagbyのモデル項目名)の最大長は 31 文字です。
  • オートスケールには対応していません。(ジョブスケジューラ Quartz が未対応のため)

Wagby で指定した型は、データベース内で次のように扱われます。

整数型 integer
文字列型 varchar(4000)
文字列型 (テキストエリア) varchar(4000)
日付型 date
時間型 time
日付時間型 timestamp
ファイル型(ファイル名) varchar(4000)
1バイト整数 smallint
2バイト整数 smallint
4バイト整数 integer
8バイト整数 numeric(18,0)
4バイト浮動小数点数 float
8バイト浮動小数点数 double precision
固定値 (作成日/更新日) datetime
その他 (URL型/メールアドレス型など) varchar(4000)

page_size が正しく設定されているかどうかを確認する

isqlコマンドで確認できます。

> "c:\Program Files\Firebird\Firebird_2_5\bin\isql.exe"
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect c:\work\fbtest\wagbydb.fdb user 'SYSDBA' password 'XXX';
Database:  c:\work\fbtest\wagbydb.fdb, User: SYSDBA
SQL> show database;
Database: c:\work\fbtest\wagbydb.fdb
      Owner: SYSDBA
PAGE_SIZE 16384
Number of DB pages allocated = 154
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 4
Transaction - oldest active = 5
Transaction - oldest snapshot = 5
Transaction - Next = 8
ODS = 11.2
Default Character set: UTF8
SQL> exit;