[Seasar-user:17734] Re: [S2JDBC]BLOB型への入出力について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 6月 12日 (金) 16:00:28 JST
小林 (koichik) です.
Date: Fri, 12 Jun 2009 14:48:31 +0900
From: "A.Watanabe" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17730] [S2JDBC]BLOB型への入出力について
> 掲題の件、OracleのBLOB型へのデータの書込み、
> 及び読込みを行いたいのですが、
> S2JDBC経由でjava.sql.Blob型として取得する事は可能でしょうか?
(略)
> BlobからOutputStream、InputStreamを取得しての書込み、読込を想定しています。
基本的にサポートしていません.
S2JDBC の getSingleResult()/getResultList() は
Statement および ResultSet をクローズして
結果を返すので,Entity/JavaBeans のプロパティに
InputStream があっても既に使えない状態です.
また,Entity では InputStream のマッピングを
サポートしていないので,流れるような
インタフェースで使うことは出来ません.
ただし,iterate() メソッドは ResultSet が
オープンされたままで呼び出されるので,これと
2Way SQL の組み合わせでは InputStream を扱える
かもしれません.
Entity ではないただの JavaBeans に InputStream の
プロパティを持たせて,
public class Foo {
public InputStream xxx;
}
jdbcManager
.selectBySql(Foo.class, "select ...")
.iterate(new IterationCallback<Foo, Boolean>() {
int count;
public Boolean iterate(Foo foo, IterationContext context) {
InputStream is = Foo.xxx;
...
}
});
試したことがないのでどうなるか分かりませんが.
個人的には BLOB のカラムだけ別に扱うユーティリティでも
作った方が便利なんじゃないかと思います.
どうせ長大な BLOB が問い合わせ条件に入ることは
ないので,複雑な問い合わせなどは普通に S2JDBC を
使って,それで求めた主キー指定で BLOB は別途扱う,
みたいな.
--
<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 メーリングリストの案内