Javaストリームを介したLOBの使用

ビジネス・ロジック層でLOBを効率的に使用するには、Javaの入力ストリームおよび出力ストリームを実装し、LOBのローカル・ファイルのコピーを操作することをお薦めします。

入力ストリームを介してLOBを使用するには、次のようにします。

  1. java.ioからファイルおよびストリーム・クラスをインポートします。
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.File;
  2. 操作が必要なLOBドメイン(BlobDomainなど)ごとに、ローカル・ファイルを設定してそのデータを保持します。
    String filename = "temp.jpg";
    File tempFile = new File(filename);
  3. LOBドメインを操作する前に、ローカル・ファイルにコピーします。
    BlobDomain myBlob = (BlobDomain) myRow.getAttribute("BlobAttribute");
    InputStream blobIn = myBlob.getBinaryStream();
    OutputStream fileOut = new FileOutputStream(tempFile);
    int next;
    while ((next = blobIn.read()) != -1) {
      fileOut.write(next);
    }
    blobIn.close();
    fileOut.close();
  4. ファイルに変更を加えます。完了したら、元のドメインにファイルをコピーします。
    FileInputStream fileIn = new FileInputStream(tempFile);
    OutputStream blobOut = myBlob.getBinaryOutputStream();
    while ((next = fileIn.read()) != -1) {
      blobOut.write(next);
    }
    fileIn.close();
    blobOut.close();


関連項目
エンティティ・オブジェクト、Associationおよびデータベース表の生成について