BLOB字段數據讀取

 因爲開發的時候公司的項目,所以只能說明不能截圖了,在這裏請大家諒解。

     BLOB這個字段,首先是存大數據的,本人倒是不建議在數據庫中存入那麼大的數據,影響服務器性能。而且如果表沒有采用分佈存儲,沒有考慮維護,一段時間就會很大,本人一點見解,表大小超過1G的容量時候,明顯影響數據讀取速度。這個扯的有點遠了,迴歸正題。

  我瞭解的系統是用HIBernate 讀取大容量的BLOB,中間採用SPRING進行管理。

在SPRING applicationContext.xml中配置

 <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />

 並將其映射到TransactionMaanger中

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
            <property name="lobHandler" ref="lobHandler"/> 
    </bean> 

 

在程序中 如有以下對象

public class USER{
 private BLOB Info;
private String name;
//生成get和set方法


}

 HIbernate 讀取BLOB字段

BLOB blob=User.getInfo();
if(blob.length>0)
{
Byte[] bytes=new Byte[blob.length-1];
bytes=blob.getBytes();//裝到bytes數組裏;
//轉換成String
string str=new String(bytes,"GBK");
}

 這樣就轉換過來了。

我之所以要寫 HIBernate 的讀取 是要跟Ibatis做對照

因爲在iBatis 中查詢返回List 當然BLOB字段也是被查詢出來了。

我調試了以下發現 List中裝的就是HashMap 一個是BLOB字段,一個當然是值,仔細在看發現就是bytes格式看來不用轉了。直接就可以用

//這裏是僞代碼只表達大意
Iterator it=list.iterator();
while(it.hashnext())
{
HashMap hm=(HashMap)it.next();

Bytes[] bytes=hm.get("info").getValue();//這樣就把BLOB數據裝進去了。


}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章