
package Search.Clob_Blob;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.Reader;

import java.sql.Blob;

import java.sql.Clob;

import java.sql.SQLException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class TestRead ...{

public static void main(String[] args) ...{

String filePath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"hibernate.cfg.xml";

File file=new File(filePath);

SessionFactory sessionFactory=new Configuration().configure(file).buildSessionFactory();

Session session=sessionFactory.openSession();

Transaction tx=session.beginTransaction();

//读取clob和blob

String imgPath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"sampleread.jpg";

TestCB testcb=(TestCB)session.get(TestCB.class, "1");

Blob photo=testcb.getPhoto();

Clob description=testcb.getDescription();

try ...{

StringBuffer buffer=new StringBuffer();

Reader reader=(Reader)description.getCharacterStream();

BufferedReader breader=new BufferedReader(reader);

char[] b = new char[60000];//每次获取60K

//将Clob解析成String

int i = 0;

while((i = breader.read(b)) != -1)

...{

buffer.append(b,0,i);

}

System.out.println(buffer.toString());

//将Blob还原成文件

FileOutputStream fos=new FileOutputStream(imgPath);

InputStream fis1=(InputStream)photo.getBinaryStream();

byte[] b1 = new byte[60];//每次获取60K

int i1 = 0;

while((i1=fis1.read(b1))!=-1)...{

fos.write(b1);

}

} catch (SQLException e) ...{

e.printStackTrace();

} catch (IOException e) ...{

e.printStackTrace();

}

tx.commit();

}

}