hibernate如何对Blob类型字段进行数据添加
来源:互联网 发布:牛顿迭代法vb 编辑:程序博客网 时间:2024/06/05 05:52
以前写过操作oracle Clob字段的方法,在的其它文章里有,现在介绍操作Blob字段的做法.
对于MS SQL和MYSQL数据库,操作Blob字段很简单,而对于oracle数据进行操作,则要复杂些,这是因为oracle访问Blob和Clob有它独特的方式,oracle Blob/Clob字段本身有一个游标(cursor),必须要通过这个游标对Blob/Clob进行操作,在Blob/Clob未创建前,我们无法获得它们的游标句柄,因此,我们必须先得创建一个空的Blob/Clob字段值,然后再从这个空的字段值取得游标句柄,再来进行我们的操作.前面那篇文章的操作方式就是这样的,不是很清楚的,可以结合以前的那篇来看,Blob和Clob的操作方式大体上相同.
hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="hibernate.Blobtest" table="blobtest" catalog="hbtplis">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator />
</id>
<property name="images" type="java.sql.Blob">
<column name="images" />
</property>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
</class>
</hibernate-mapping>
pojo:
package hibernate;
import java.sql.Blob;
/**
*
* @author coffee
*/
public class Blobtest implements java.io.Serializable {
private Long id;
private Blob images;
private String name;
public Blobtest() {
}
public Blobtest(Blob images, String name) {
this.images = images;
this.name = name;
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public Blob getImages() {
return this.images;
}
public void setImages(Blob images) {
this.images = images;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
DAO:
package hibernate;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import org.hibernate.Hibernate;
import org.hibernate.LockMode;
import org.hibernate.Transaction;
/**
*
* @author coffee
*/
public class BlobtestDAO extends BaseHibernateDAO {
public void save(Blobtest blobtest) throws Exception {
try {
/*
* 第一种方式,可用于ms sql和mysql数据库
Transaction tran=getSession().beginTransaction();
FileInputStream img = new FileInputStream("d:\\movie\\linux4.jpg");
Blob images = (Blob) Hibernate.createBlob(img);
blobtest.setImages(images);
getSession().save(blobtest);
tran.commit();
*/
//对于oracle这样的数据库不能以第一种方式那样,必须向下面这样操作
Transaction tran=getSession().beginTransaction();
blobtest.setImages(Hibernate.createBlob(new byte[1]));
getSession().save(blobtest);
getSession().flush();
getSession().refresh(blobtest,LockMode.UPGRADE);
Blob blob=blobtest.getImages();
InputStream is=blob.getBinaryStream();
FileOutputStream fos=new FileOutputStream("d:\\pic\\linux4.jpg");
byte[] buf=new byte[102400];
int len;
while((len=is.read(buf))!=-1){
fos.write(buf,0,len);
}
fos.close();
is.close();
getSession().save(blobtest);
tran.commit();
} catch (RuntimeException re) {
throw re;
}
}
}
- hibernate如何对Blob类型字段进行数据添加
- hibernate对Blob类型字段进行数据添加
- hibernate对oracle数据库CLOB、blob类型字段处理原则
- blob类型字段值添加
- 【PLSQL】如何对BLOB字段进行like操作
- Hibernate读写Clob和Blob类型字段
- Hibernate读写Clob和Blob类型字段
- Hibernate读写Clob和Blob类型字段
- oracle中如何向带有blob字段类型的表插入数据
- fiori2.0-如何对数据进行某一字段排序。
- 多层无状中如何对数据集添加静态字段?
- Spring+hibernate对clob、blob字段的处理方法
- 使用 BLOB 类型字段
- blob字段类型
- blob字段类型
- MySQL中如何插入blob类型数据
- 用sql语句写入含blob类型字段的数据
- 处理Blob类型数据,例如将对象保存到blob字段中
- Xcode -- Targets教程
- Android Text
- Java简单小程序--猜数字And回文数
- 中国4G渐近 三大运营商制式之争成悬念
- Linux 计划任务 crond 命令用法
- hibernate如何对Blob类型字段进行数据添加
- 进程的通信方式
- ACM 推荐blog汇总及OJ
- Java debug skills for Eclipse juno 4.2
- UI -- Core animation教程(共三章)
- 结合舞蹈更易理解的算法--插入排序算法[java代码]
- VMware CTO辞职 加入General Catalyst
- maven简介及安装配置
- 如何用MFC制作类似VS2005或VS2008的界面