[Seasar-user:16204] Re: [S2JPA] PersistenceUnitInfoFactoryImplのDEFAULT_DATASOURCE
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 11月 1日 (土) 21:00:01 JST
小林 (koichik) です.
Date: Sat, 01 Nov 2008 19:45:04 +0900
From: Akira Asakawa <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16203] [S2JPA] PersistenceUnitInfoFactoryImplのDEFAULT_DATASOURCE
> 淺川と申します。
>
> org.seasar.framework.jpa.impl.PersistenceUnitInfoFactoryImplから
> PersistenceUnitInfoを作成すると、persistence.xml中で
> <jta-data-source>と<non-jta-data-source>のどちらかを
> 指定しなかった場合に、指定しなかった方も強制的にデフォルトの
> jdbc/dataSourceを参照するデータソースが返されてしまいます。
(略)
> JSR 220にはデフォルトのデータソースは定義されていないようですし、
> 指定されていないデータソースはnullを返すべきだと思うのですが、
「null を返すべき」と判断する材料がありません.
getNonJtaDataSource() の戻り値については,
The non-JTA-enabled data source to be used by the persistence
provider for accessing data outside a JTA transaction.
The data source corresponds to the named <non-jta-data-source>
element in the persistence.xml file or provided at deployment
or by the container.
となっていて,S2 では最後の「or by the container」
としてデフォルトのデータソースを設定しています.
デフォルト値は PersistenceUnitInfoFactoryImpl の
defaultNonJtaDataSource で変更できますが,現状は
null を設定することはできません.
「null を返すべき」なら,上述のところに「or null」
などと書いて欲しいところです.
> Toplink Essentialsでは、transaction-type="JTA"の場合でも
> <non-jta-data-source>を読み込み専用のデータソースとして使うため、
> jdbc/dataSource以外のデータソースをpersistence.xmlで指定した場合に
> 何の関係もないjdbc/dataSourceも使用してしまうことになります。
トランザクション境界外で遅延フェッチされる
場合とかでしょうか?
そうであれば,<non-jta-data-source> をちゃんと
指定するのが筋のような気もしますが (JTA の
トランザクション外でデータソースが使われると
分かっているのだから),それだと何か不都合が
あるのでしょうか?
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内