アプリ版:「スタンプのみでお礼する」機能のリリースについて

JAVAを使って、ORACLE8iを用いたWebを開発してます。
JAVAのByte型に格納したバイナリデータをORACLEに格納しようと思ったのですが、適した型が見つからず悩んでます。
BLOB型を検討したのですが、一定のサイズを超過するとレスポンスの問題が関係し、アクセス方法が別途必要する事がわかりました。
私的には、integer型のように扱ってデータをアクセスできたらと思います。(専用のインターフェースを使用しない)

すみませんが、宜しくお願いします。

A 回答 (3件)

BLOB(Binary Large OBject)は、あくまでもオブジェクトデータ型ですので、手続きが少々煩雑になるのは仕方ないですね。



JDBC3.0の拡張であるsetBinaryStreamか、setBytes(JDK1.4以上)。かOracle JDBC Driverの拡張型であるoracle.sql.BLOB型のgetOutputBinaryStreamを使うのが常套手段でしょうか?

単にバイナリを扱うならRAW型(2000byte)、LONG RAW型(2GByte-1)がありますが、LONG RAWはテーブルに1つしか作れないなど制限ががありますし、データへのアクセスはシーケンシャルに持ってくるので必要なときだけデータにアクセスするBLOB型よりレスポンスはあんまり良くないと思います。

参考URL:http://otn.oracle.co.jp/document/products/oracle …
    • good
    • 0
この回答へのお礼

ありがとうございます。
integer型のような扱いをする事ができないのですね。バイナリをデータで扱うのは、結構制限があるのですね。
代用する型もあるのは、初めて知りました。でも、制約が…。
oracleだけでなく、JAVAのバージョンにもよるとなると、自分の環境を再度確認した方がよいですね。
ちなみに、J2EE1.3です。

また、参考・アドバイスがありましたら、お願いします。

お礼日時:2004/02/26 08:34

確かにBLOBを利用するとアクセスが難しくなりますが、


バイナリデータはBLOBで格納する以外ないと思います。
共通関数的なものを自分で作成して、どのデータ型でも
同じようなアクセス方法で対応できるようにするのも
ひとつの手だと思います。

また、OracleとJDBCのバージョンが共に8.1.6以上で
あれば、setBinaryStream,setObject等で比較的
簡単にBLOBに書き込みできると思います。

参考URL:http://otn.oracle.co.jp
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
やはり、アクセスは難しくなるのですね。

「共通関数…」なるほど。ネットで調べても、サンプルが少なかったので、あまり着たい出来ないのかなと思ってました。
「setBinaryStream,setObject」を中心に調査に入りたいと思います。
ありがとうございました。
又、何か気づいた点がありましたら、お願いします。

お礼日時:2004/02/26 08:28

 バイナリデータをファイルで落とし、Oracle上ではファイル名を保持するようにした方が良いです。

    • good
    • 0
この回答へのお礼

早々の回答ありがとうございます。
ファイルにして、ファイル名を管理したほうがよいですよね。

できれば、DBに実体を格納したい…というのが希望なんです。

お礼日時:2004/02/25 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!