用hibernate操作oracle的blob字段
来源:互联网 发布:清华大学 网络学堂 编辑:程序博客网 时间:2024/05/14 11:48
1. Bolb类型字段说明:
这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作,你就获得了blob的cursor,可以真正的写入blob数据了。
2. 获取游标存在的问题:
代码示例:
//PO:CardSuitInfo
public class CardSuitInfo implements Serializable ...{
private java.sql.Blob cardFacePicFile;
public void setCardFacePicFile(Blob cardFacePicFile) ...{
this.cardFacePicFile = cardFacePicFile;
}
public java.sql.Blob getCardFacePicFile() ...{
return this.cardFacePicFile;
}
}
//1.首先插入空的blob
cardSuitInfo.setCardFacePicFile(net.sf.hibernate.Hibernate.createBlob(new byte[1]));
session.save(cardSuitInfo);
session.flush();
//2.写入blob
session.refresh(cardSuitInfo, LockMode.UPGRADE);// 设置锁定级别
weblogic.jdbc.wrapper.Blob weblogicBlob = (weblogic.jdbc.wrapper.Blob) cardSuitInfo.getCardFacePicFile();
oracle.sql.BLOB oracleBlob = (oracle.sql.BLOB) weblogicBlob.getVendorObj();
OutputStream out = oracleBlob.getBinaryOutputStream();
byte[] buffer = cardSuitInfoView.getCardFacePicFileBody();
out.write(buffer, 0, buffer.length);
out.close();
session.save(cardSuitInfo);
//PO:CardSuitInfo
public class CardSuitInfo implements Serializable ...{
private java.sql.Blob cardFacePicFile;
public void setCardFacePicFile(Blob cardFacePicFile) ...{
this.cardFacePicFile = cardFacePicFile;
}
public java.sql.Blob getCardFacePicFile() ...{
return this.cardFacePicFile;
}
}
//1.首先插入空的blob
cardSuitInfo.setCardFacePicFile(net.sf.hibernate.Hibernate.createBlob(new byte[1]));
session.save(cardSuitInfo);
session.flush();
//2.写入blob
session.refresh(cardSuitInfo, LockMode.UPGRADE);// 设置锁定级别
weblogic.jdbc.wrapper.Blob weblogicBlob = (weblogic.jdbc.wrapper.Blob) cardSuitInfo.getCardFacePicFile();
oracle.sql.BLOB oracleBlob = (oracle.sql.BLOB) weblogicBlob.getVendorObj();
OutputStream out = oracleBlob.getBinaryOutputStream();
byte[] buffer = cardSuitInfoView.getCardFacePicFileBody();
out.write(buffer, 0, buffer.length);
out.close();
session.save(cardSuitInfo);
读取blob字段:
......
weblogic.jdbc.wrapper.Blob weblogicBlob = (weblogic.jdbc.wrapper.Blob) cardSuitInfo.getCardBackPicFile();
oracle.sql.BLOB oracleBlob = (oracle.sql.BLOB) weblogicBlob.getVendorObj();
BufferedInputStream in = new BufferedInputStream(oracleBlob.getBinaryStream());
long picLong = cardSuitInfo.getCardBackPicFile().length();
byte[] bytes = new byte[Integer.parseInt(picLong + "")];//
int result = in.read(bytes);
if (result > 0) ...{
downloadFileView.setFileByteArray(bytes);
}
in.close();
......
......
3.总结:
weblogic进行的封装,使我们必须加这步转换,如果用jdbc操作就不会出现此问题,而直接可以转化为oracle.sql.BLOB的对象。
重点步骤:
weblogic.jdbc.wrapper.Blob weblogicBlob = (weblogic.jdbc.wrapper.Blob) cardSuitInfo.getCardBackPicFile();
oracle.sql.BLOB oracleBlob = (oracle.sql.BLOB) weblogicBlob.getVendorObj();
- 用hibernate操作oracle的blob字段
- 用sql操作oracle的blob字段
- 用ADO操作ORACLE的BLOB字段
- JDBC和Hibernate操作Oracle中的Blob字段的小结
- oracle里BLOB字段的HIBERNATE,spring操作访问
- 用Hibernate操作Oracle Blob
- ORACLE操作BLOB字段
- 用sql操作oracle的blob字段的两个例子
- Oracle中BLOB字段的操作
- ASP.net 操作 Oracle 的 Blob 字段
- 使用java操作oracle的blob字段
- ibatis操作oracle的clob字段和blob字段
- Oracle数据库BLOB字段操作
- Oracle数据库BLOB字段操作
- Oracle数据库BLOB字段操作
- struts+hibernate上传图片保存到oracle的blob字段
- blob字段的Hibernate处理(DB2,Oracle)
- hibernate处理MySQL中Blob字段的更新操作
- C#数组篇讲解
- 搜索引擎对于版权有了新的保护工具,叫做“避风港原则”
- BAPI Explorer
- jstl中的split截取分隔的使用例子
- 南周网站上没有的《系统》
- 用hibernate操作oracle的blob字段
- GIS业务发展的阶段性
- WEB技术的一些东西整理
- 在FORM的不同按钮实现不同的ACTION的方法
- 一个链接打开两个帧页
- 网页设计值得去的地方
- crontab定时运行指定脚本
- datalist,repeater等绑定控件的分页代码
- Equinox OSGI平台中集成Tuscany SCA容器(转载)