ホームページ データベース mysql チュートリアル 使用Hibernate处理Oracle中的Blob字段

使用Hibernate处理Oracle中的Blob字段

Jun 07, 2016 pm 05:35 PM
hibernate

写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob

1. Bolb类型字段说明:

写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢?

这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作,你就获得了blob的cursor,,可以真正的写入blob数据了。

2. Bolb类型字段保存:

Hibernate的配置文件就不写了 ,需要将Blob字段了类型设为java.sql.Blob,下面直接上代码

 public void save(ZyglBlxx bean, InputStream ins) throws WebServiceException {
  // TODO Auto-generated method stub
  Session session = this.getHibernateTemplate().getSessionFactory().openSession();
  //ins.
  //out.write(b)
  try {
   bean.setDoccontent(BLOB.getEmptyBLOB());
   
   Transaction tr = session.beginTransaction();
   bean.setVId(WebServiceEditUtils.getPk());
   session.save(bean);
   session.flush();
   session.refresh(bean, LockMode.UPGRADE);
   if(ins!=null){
    SerializableBlob sb = (SerializableBlob)bean.getDoccontent();
    BLOB b = (BLOB)sb.getWrappedBlob();
   
    OutputStream out = b.getBinaryOutputStream();
   
    int len=-1;
    byte[] bt = new byte[2048];        //可以根据实际情况调整,建议使用1024,即每次读1KB
    while((len=(ins.read(bt))) != -1)      {
     out.write(bt,0,len);                    //建议不要直接用os.write(bt)
    }
    out.flush();
    ins.close();
    out.close();
   }
   session.flush();
   tr.commit();
   session.close();
  } catch (IOException e) {
   e.printStackTrace();
   throw ExceptionManager.getExcption("18");
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   throw ExceptionManager.getExcption("19");
  }
 }

为了保存文件时比较方便我这里的参数直接接收为InputStream,其他类型类似

Hibernate 的详细介绍:请点这里
Hibernate 的下载地址:请点这里

Hibernate 中文手册 PDF

linux

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SpringBoot プロジェクトに Hibernate を統合する方法 SpringBoot プロジェクトに Hibernate を統合する方法 May 18, 2023 am 09:49 AM

SpringBoot プロジェクトに Hibernate を統合する方法

Java エラー: Hibernate エラー、処理方法と回避方法 Java エラー: Hibernate エラー、処理方法と回避方法 Jun 25, 2023 am 09:09 AM

Java エラー: Hibernate エラー、処理方法と回避方法

Hibernateとmybatisの違いは何ですか Hibernateとmybatisの違いは何ですか Jan 03, 2024 pm 03:35 PM

Hibernateとmybatisの違いは何ですか

Hibernate で一括挿入更新操作を実行するにはどうすればよいですか? Hibernate で一括挿入更新操作を実行するにはどうすればよいですか? Aug 27, 2023 pm 11:17 PM

Hibernate で一括挿入更新操作を実行するにはどうすればよいですか?

Java Hibernate における 1 対多および多対多の関係のマッピング方法は何ですか? Java Hibernate における 1 対多および多対多の関係のマッピング方法は何ですか? May 27, 2023 pm 05:06 PM

Java Hibernate における 1 対多および多対多の関係のマッピング方法は何ですか?

Java フレームワーク テクノロジ スタックの深い理解: Spring MVC、Hibernate、MyBatis などの一般的な Java フレームワークを調査します。 Java フレームワーク テクノロジ スタックの深い理解: Spring MVC、Hibernate、MyBatis などの一般的な Java フレームワークを調査します。 Dec 26, 2023 pm 12:50 PM

Java フレームワーク テクノロジ スタックの深い理解: Spring MVC、Hibernate、MyBatis などの一般的な Java フレームワークを調査します。

Java 言語による Hibernate フレームワークの概要 Java 言語による Hibernate フレームワークの概要 Jun 10, 2023 am 11:35 AM

Java 言語による Hibernate フレームワークの概要

Hibernate の 2 次キャッシュはどのように機能しますか? Hibernate の 2 次キャッシュはどのように機能しますか? Sep 14, 2023 pm 07:45 PM

Hibernate の 2 次キャッシュはどのように機能しますか?

See all articles