intra-mart Accel Platform 互換ガイド 第11版 2023-10-31

4. スクリプト開発DatabaeseManagerのデータベースオプション

スクリプト開発API DatabaeseManagerのデータベースオプションの設定場所が変更になっています。

4.1. 高速フェッチオプション

DatabaseManager(スクリプト開発モデル)のfetch メソッドのパフォーマンスを向上させるオプションです。
  • 設定
   
設定ファイル conf/parameter.xml
パラメータ名 database.fast-fetch
パラメータ値 true / false (デフォルトは true)
parameter.xmlは IM-Juggling で設定が変更できます。

<param>
 <param-name>database.fast-fetch</param-name>
 <param-value>true</param-value>
</param>


  • 説明
DatabaseManager(スクリプト開発モデル)のfetch メソッドで、対象DB を判別し、SQL 文を加工して対象行のみを取得することで、パフォーマンスが向上します。
また、DB より対象行のみを取得しますので、JDBC 内でのメモリリークが解消されます。(Oracle, PostgreSQL)

設定による動作は以下の通りです。

   
有効(true) DB に問い合わせるSQL文を加工し、対象行のみを取得(新仕様)
無効(false) DB に問い合わせるSQL文を加工せず、DB カーソルをスキップして対象行を取得(旧仕様)

注意

この設定を true に設定した場合、以下の制約が発生します。

select カラムで別テーブルの同じカラム名をエイリアスを利用しないで同時に取得するとSQL エラーになります。

(例) select a.name,b.name from a,b where a.id = b.id

(Oracle, Microsoft SQL Server)

コラム

intra-mart Web Platform 7.2.4での設定項目は以下の場所に存在しました。

conf/imart.xml
intra-mart/platform/service/application/database/fast-fetch タグ

4.2. プリペアドステートメントオプション

DatabaseManager(スクリプト開発モデル)のupdate およびinsert メソッドを用いた場合に内部でのSQL 文の作成方式を変更するオプションです。
  • 設定
   
設定ファイル conf/parameter.xml
パラメータ名 database.prepared-modify
パラメータ値 true / false (デフォルトは true)
parameter.xmlは IM-Juggling で設定が変更できます。

<param>
  <param-name>database.prepared-modify</param-name>
  <param-value>true</param-value>
</param>


  • 説明

設定による動作は以下の通りです。

   
有効(true) PreparedStatement を用いたSQL 文の作成方式(新仕様)を用います。
無効(false) 文字列連結によるSQL 文の作成方式(旧仕様)を用います。

この設定を有効にすると、以下の点が改善されます。

  • nvarchar 系に対するUTF-8 の文字での更新、挿入が可能になります。(Microsoft SQL Server)

注意

この設定を true に設定した場合、以下の点に注意してください。

  • PreparedStatement を用いたSQL 文の作成方式(新仕様)を用いますが、update のset 句、およびinsertのvalues 句のみ対応しています。 update のwhere 句については、互換性維持のため未対応となっています。
  • PostgreSQL では、数値型カラムに文字列型で更新、挿入できない事象が確認されておりますので、このオプションの設定にかかわらず、必ず文字列連結によるSQL 文の作成方式(旧仕様)を用います。

コラム

intra-mart Web Platform 7.2.4での設定項目は以下の場所に存在しました。

conf/imart.xml
intra-mart/platform/service/application/database/prepared-modify タグ

4.3. Timestamp型マッピングオプション

データベース上のテーブルでtimestamp 型のフィールドを、Date 型オブジェクトとしてマッピングするための設定です。
  • 設定
   
設定ファイル conf/parameter.xml
パラメータ名 database.timestamp-is-date
パラメータ値 true / false (デフォルトは false)
parameter.xmlは IM-Juggling で設定が変更できます。

<param>
  <param-name>database.timestamp-is-date</param-name>
  <param-value>false</param-value>
</param>


  • 説明

設定による動作は以下の通りです。

   
有効(true)
timestamp 型フィールドはDate 型オブジェクトとして扱われます。
具体的には timestamp 型のフィールドを持つテーブルに対してDatabaseManager オブジェクトを使用してDatabaseResult を取得した場合、上記のフィールド値はDate 型のデータとして取得されます。
また、DbParameter.TYPE_DATE を使用してDate 型のデータを、timestamp 型のフィールドに対してセットできるようになります。
無効(false) String 型として扱われます。

注意

ナノ秒のデータは保証されません。

また、Microsoft SQLServer シリーズのtimestamp 型には対応しておりません。

コラム

intra-mart Web Platform 7.2.4での設定項目は以下の場所に存在しました。

conf/imart.xml
intra-mart/platform/service/application/database/data/timestamp-is-date タグ