激情五月天婷婷,亚洲愉拍一区二区三区,日韩视频一区,a√天堂中文官网8

<ul id="buwfs"><strike id="buwfs"><strong id="buwfs"></strong></strike></ul>
    <output id="buwfs"></output>
  • <dfn id="buwfs"><source id="buwfs"></source></dfn>
      <dfn id="buwfs"><td id="buwfs"></td></dfn>
      <div id="buwfs"><small id="buwfs"></small></div>
      <dfn id="buwfs"><source id="buwfs"></source></dfn>
      1. <dfn id="buwfs"><td id="buwfs"></td></dfn>
        始創(chuàng)于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業(yè)
        • 60秒人工響應(yīng)
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補(bǔ)償
        全部產(chǎn)品
        您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

        Oracle讀取Blob數(shù)據(jù)-通過hibernate

        發(fā)布時間:  2012/8/26 16:10:28

        通過hibernate向Oracle存儲字節(jié)類型的數(shù)據(jù)(如byte[]等),在定義實(shí)體對象的時候不能用"private byte[] content", 這樣定義我試過,在存儲數(shù)據(jù)的時候(session.save(user))是沒有問題的,但是在讀取Blob字段(Oracle中存儲byte[]使用的是"BLOB"類型)時就會出現(xiàn)問題,讀出來的東西就成了亂碼.
        -
         

        使用hibernate讀取Blob字段時,實(shí)體對象(對應(yīng)的byte[]類型字段)應(yīng)該這樣定義:

        1.import java.io.Serializable; 
        2.import java.sql.Blob;  3. 
        4.public class User implements Serializable {                  5.    // Fields                     6.    private long id;             7.    private String name;             8.    private String email;             9.    private String addr;             10.    // 定義Blob的pthto              11.    private Blob photo;  12.     
        13.    // getter and setters   14.    ...... 
        15.} 
        對應(yīng)的hibernate文件配置:

        1.<?xml version="1.0" encoding="UTF-8"?> 
        2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  4.<Hibernate-mapping>           5.    <class name="com.xxx.xxx.User" table="user">               6.        <id name="id" type="java.lang.Long">                   7.            <column name="id" />                   8.            <generator class="increment" />               9.        </id>               10.        <property name="name" type="java.lang.String">                   11.            <column name="name" length="45" not-null="true" />               12.        </property>               13.        <property name="email" type="java.lang.String">                   14.            <column name="email" length="45" />               15.        </property>               16.        <property name="addr" type="java.lang.String">                   17.            <column name="addr" length="45" />               18.        </property>               19.        <!-- 映射blob類型 -->               20.        <property name="photo" type="java.sql.Blob">                   21.            <column name="photo" />               22.        </property>           23.    </class>       24.</Hibernate-mapping>    讀取Blob數(shù)據(jù)方法:

        1.// 寫方法  
        2.public void testCreate(){                        3.    User user = new User();            4.    user.setName("linweiyang");            5.    user.setAddr("beijing");            6.    user.setEmail("linweiyang@163.com");            7.    Blob photo = null;                    8.    try {                9.        //將圖片讀進(jìn)輸入流                 10.        FileInputStream fis = new FileInputStream("c:\\a.jpg");                11.        //轉(zhuǎn)成Blob類型                 12.        photo = Hibernate.createBlob(fis);                           
        13.    } catch (FileNotFoundException e) {                14.        e.printStackTrace();           
        15.    } catch (IOException e) {                16.        e.printStackTrace();           
        17.    }                           
        18.    user.setPhoto(photo);                      
        19.    Session session = factory.openSession();           
        20.    Transaction tr = session.beginTransaction();           
        21.    session.save(user);           
        22.    tr.commit();           
        23.    session.close();          
        24.}               
        25. 
        26.// 讀方法   27.public void testRerieve(){                        28.    Session session = factory.openSession();           
        29.    User user = (User)session.load(User.class, new Long(3));            30.    try {                31.        //從數(shù)據(jù)庫中要讀取出來                 32.        InputStream is = user.getPhoto().getBinaryStream();               
        33.        //在把寫到一個圖片格式的文件里                 34.        FileOutputStream fos = new FileOutputStream("c:\\linweihan.jpg");                            35.        byte[] buffer = new byte[1024];                36.        int len = 0;                37.        //從數(shù)據(jù)庫中讀取到指定的字節(jié)數(shù)組中                 38.        while((len = is.read(buffer) )!= -1){                    39.            //從指定的數(shù)組中讀取,然后輸出來,所以這里buffer好象是連接inputStream和outputStream的一個東西                     40.            fos.write(buffer,0,len);                41.        }           
        42.    } catch (FileNotFoundException e) {                43.        e.printStackTrace();           
        44.    } catch (SQLException e) {                45.        e.printStackTrace();           
        46.    } catch (IOException  e) {                47.        e.printStackTrace();           
        48.    }                      
        49.    session.close();       
        50.}    
        關(guān)于輸入輸出流

        讀入流自然要有讀入的源頭,輸出也要輸出到某個地方,輸出一般是先要輸讀入,這里連接輸入和輸出的是一個在內(nèi)存中的字節(jié)數(shù)組buffer.這樣從數(shù)據(jù)庫中讀到這個數(shù)組里,輸出流在從這個數(shù)組中輸出到特定的文件格式里。


         


        本文出自:億恩科技【mszdt.com】

        服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

      2. 您可能在找
      3. 億恩北京公司:
      4. 經(jīng)營性ICP/ISP證:京B2-20150015
      5. 億恩鄭州公司:
      6. 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
      7. 億恩南昌公司:
      8. 經(jīng)營性ICP/ISP證:贛B2-20080012
      9. 服務(wù)器/云主機(jī) 24小時售后服務(wù)電話:0371-60135900
      10. 虛擬主機(jī)/智能建站 24小時售后服務(wù)電話:0371-60135900
      11. 專注服務(wù)器托管17年
        掃掃關(guān)注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務(wù)熱線