[Seasar-user:21640] S2DaoがDBメタデータ取得時に発行していると思われるSQL文について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2013年 7月 4日 (木) 16:45:28 JST


seasar-userのみなさま

初めて投稿させていただきます。
株式会社アイ・ティ・フロンティアの西村と申します。

現在、以下のS2製品、APサーバ、DBを利用して、
JavaとLinuxシェルでバッチアプリケーションの開発を行っています。

<APサーバ>
Weblogic Server 10.3.6.0

<DB>
Oracle Database 11g Express Edition

<S2関連製品>
s2-dao-1.0.49
s2-extension-2.4.40
s2-framework-2.4.40
s2-tiger-2.4.39

アプリケーションのテスト中に、DBに対して発行されるSQL文を監視していたとこ
ろ、
S2Container初期化〜Dao実行の間に、
DBに対して以下2種類のSQL文が発行されていることを確認しました。
↓
++++++++++++++++++++++++++++++
・テーブルの制約情報を取得していると思われるSQL文
    SELECT NULL AS table_cat,
           c.owner AS table_schem,
           c.table_name,
           c.column_name,
           c.position AS key_seq,
           c.constraint_name AS pk_name
    FROM all_cons_columns c, all_constraints k
    WHERE k.constraint_type = 'P'
      AND k.table_name = :1
      AND k.owner like :2 escape '/'
      AND k.constraint_name = c.constraint_name 
      AND k.table_name = c.table_name 
      AND k.owner = c.owner 
    ORDER BY column_name

・テーブルのカラム情報を取得していると思われるSQL文
    SELECT NULL AS table_cat,
           t.owner AS table_schem,
           t.table_name AS table_name,
           t.column_name AS column_name,
           DECODE (t.data_type, 'CHAR', 1, 'VARCHAR2', 12, 'NUMBER', 3,
                   'LONG', -1, 'DATE', 91, 'RAW', -3, 'LONG RAW', -4, 
                   'BLOB', 2004, 'CLOB', 2005, 'BFILE', -13, 'FLOAT', 6, 
                   'TIMESTAMP(6)', 93, 'TIMESTAMP(6) WITH TIME ZONE', 
-101, 
                   'TIMESTAMP(6) WITH LOCAL TIME ZONE', -102, 
                   'INTERVAL YEAR(2) TO MONTH', -103, 
                   'INTERVAL DAY(2) TO SECOND(6)', -104, 
                   'BINARY_FLOAT', 100, 'BINARY_DOUBLE', 101, 
                   1111)
                  AS data_type,
           t.data_type AS type_name,
           DECODE (t.data_precision, null, t.data_length, 
t.data_precision)
                  AS column_size,
           0 AS buffer_length,
           t.data_scale AS decimal_digits,
           10 AS num_prec_radix,
           DECODE (t.nullable, 'N', 0, 1) AS nullable,
           NULL AS remarks,
           t.data_default AS column_def,
           0 AS sql_data_type,
           0 AS sql_datetime_sub,
           t.data_length AS char_octet_length,
           t.column_id AS ordinal_position,
           DECODE (t.nullable, 'N', 'NO', 'YES') AS is_nullable
    FROM all_tab_columns t
    WHERE t.owner LIKE :1 ESCAPE '/'
      AND t.table_name LIKE :2 ESCAPE '/'
      AND t.column_name LIKE :3 ESCAPE '/'

    ORDER BY table_schem, table_name, ordinal_position
+++++++++++++++++++++++++++++++

下記URLの方法をもとに、JDBC接続時のデバッグログを出力し、
デバッグログとタイミング、アプリケーションが出力しているログのDao実行のタ
イミングを比較しました。
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/java.111/E05720-02/diagnose.htm

大きく分けて以下2種類のDaoがありますが、以下の種別に関係なく、
SQL文が発行されているDao、発行されていないDaoがあります。
・JavaBeansに格納された値からSQL文を自動生成するDao
・外部SQLファイルによってSQL文を発行するDao

本メールにて、以下の点についてご存知の方がいらっしゃいましたら、
どうかご教示いただきたく思います。
・当該のSQL文は、DB接続時のメタデータ取得のために、S2DaoとDBのドライバによ
って
 発行されているという認識で問題ないか
・当該のSQL文の発行回数を見積もる計算式などはあるか
・当該のSQL文の発行タイミング、トリガー、その他規則性などはあるか

よろしくお願いします。
-------------------------------------------------------
株式会社 アイ・ティ・フロンティア
西村 勇人
E-mail nishimura_hayato @ itfrontier.co.jp
----------------------------------------------------

-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20130704/102d75c7/attachment.html>


Seasar-user メーリングリストの案内