hibernateを使用してOracleデータベースからBlobタイプのデータを読み出す処理の概要

1389 ワード

最近、hibernateを使用してOracleデータベースからBlobタイプのデータを読み出す問題(以前、hibernateを使用してsqlserverデータベースからimageタイプのデータを読み出す問題に遭遇しました.参照:http://javamao.iteye.com/blog/368739).ここでまとめると、プログラムで使用する画像には2つの方法があり、1つはそのアドレスをデータベースに格納すること、2つは画像をデータベースに格納することであり、後者は管理しやすい.前提:OracleデータベースのテーブルにあるフィールドのタイプはBlobです.Daoレイヤではhibernateフレームワーク、エンティティクラス、および関連するマッピングファイルがhibernate reverseで生成されます.状況:hibernate reverseを通過すると、テーブルのBlobタイプフィールドに対応する属性タイプがStringタイプに自動的に生成されます.これは適切ではありません.ソリューション:1テーブルのBlobタイプフィールドに対応するエンティティクラス属性タイプをStringからbyte[]に変更します.②エンティティに関するマッピングファイルのtypeをorg.springframework.orm.hibernate 3.support.BlobByteArrayTypeに変更し、lazy="true"を加えます.③LobHandlerをHibernateセッションファクトリsessionFactoryに注入し、アプリケーションContext.xmlに追加する.



		
			
		


 
上のlobHandlerをHibernateのSession工場に注入します.

		
。。。。。。

 その後、byte[]の内容をファイル出力ストリームでメモリからディスクに書き込みます.残りの操作は必要に応じて行えばよい.