java,php,asp.net,linux,javascript,mysql,mssql,oracle,编程

hibernate映射clob blob字段


在许多情况下要存储大型字符串或者二进制数据如图片等hibernate也提供了对blob和clob类型的支持 
blob采用单字节存储适合保存二进制数据,如图片文件clob采用多字节存储适合保存大型文本等 
在mssql中 image和ntext分别对应着blob和clob 
表映射文件对两种类型的写法 

对于blob格式的映射类型为type="java.sql.Clob"; 
对bean的写法没区别直接生成getter和setter 
保存一个图片的二进制内容 
User user=new User(); 
FileInputStream image=new FileInputStream("image.jpg"); 
Blob img=Hibernate.createBlob(image); 
user.setImage(img); 
Clob desc=Hibernate.createClob("abcd"); 
user.setDesc(desc); 
save(user); 
////保存blob和clob类型完成 
读取: 
读取blob类型二进制数据 
Blog img=user.getImage(); 
InputStream inputs=img.getBinaryStream();//获取二进制流 
写入文件 
FileOutStream fos=new FileOutStream("tempimg.jpg"); 
byte [] buffer=new byte[102400]; 
int len; 
while((len=inputs.read(buffer))!=-1) 

fos.write(buffer,0,len); 

fos.close; 
inputs.close; 
//oracle执行会出现以下错误 
streams type cannot be userd in batching 
Orcale JDBC不允许流操作以批量方式进行(oracle blob采用流机制作为数据读写方式) 
user.setImage(Hibernate.createBlob(new byte[1])); 
user.setDesc(Hibernate.careteClob(" ")); 
session.save(user); 
session.flush(); 
session.refresh(user,LockMode.UPGRADE); 
向里面blob写入实际内容同上 
写入clob 
oracle.sql.Clob clob=user.getDesc(); 
Writer writer=clob.getCharacterOutputStream(); 
writer.write("abcd"); 
session.save(user); 
------------------------------------------------------------ 
 
http://www.pmjava.com/Article/ShowInfo.asp?ID=62943(原创)                         

posted on 2009-06-15 21:36 rrong_m 阅读(4527) 评论(0)  编辑  收藏

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

随笔档案

文章分类

文章档案

java编程

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜