ひがやすを技術ブログ

電通国際情報サービスのプログラマ

複数のDBMSの切り替え

皆様のおかげで、情報を集めることができ、どうもありがとうございました。
DatabaseProductNameとDBMSの関係は次のような感じです。
dbms.properties


=org.seasar.dao.dbms.Standard
Oracle=org.seasar.dao.dbms.Oracle
PostgreSQL=org.seasar.dao.dbms.PostgreSQL
HSQL\ Database\ Engine=org.seasar.dao.dbms.HSQL
Firebird=org.seasar.dao.dbms.Firebird
MySQL=org.seasar.dao.dbms.MySQL
Microsoft\ SQL\ Server=org.seasar.dao.dbms.MSSQLServer
DB2/LINUX=org.seasar.dao.dbms.DB2
DB2/NT=org.seasar.dao.dbms.DB2
DB2/UDB=org.seasar.dao.dbms.DB2
DB2/6000=org.seasar.dao.dbms.DB2
DB2/AIX=org.seasar.dao.dbms.DB2
DB2/HPUX=org.seasar.dao.dbms.DB2
DB2/HP=org.seasar.dao.dbms.DB2
DB2/EEE=org.seasar.dao.dbms.DB2
DB2/CS=org.seasar.dao.dbms.DB2
DB2/SUN=org.seasar.dao.dbms.DB2
DB2/PE=org.seasar.dao.dbms.DB2
DB2/2=org.seasar.dao.dbms.DB2
DB2/PTX=org.seasar.dao.dbms.DB2
DB2/SCO=org.seasar.dao.dbms.DB2
dbmsパッケージの下には、Dbmsインターフェースを実装したクラス群がいて
DBMS固有の処理はここで行われます。
dbms.propertiesにエントリを増やすと対応できるDBMSも自動的に
追加されます。
DBMSと拡張子の関係は以下のとおりです。

Oracle:oracle
PostgreSQL:postgre
HSQL:hsql
Firebird:firebird
MSSQLServer:mssql
MySQL:mysql
DB2:db2
例えば、getEmployees.sqlの場合、Oracleのときだけ違うSQL
したいときは、getEmployees_oracle.sqlのようにします。
ロケールによるプロパティの切り替えみたいな感じです。


また、S2DaoV1.0.1から完全にマルチDBMSに対応しました。
複数のDBMSを混在させても、SQLの自動生成も含めてきちんと
処理できます。
以前も複数のDBMSに対応はしていたのですが、
同時に使えるのは1つでした。今回からは複数同時に使えます。
追加:MySQLが抜けていたので追加しました。