package cn.com.yyaccp.exam.daoimp;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import oracle.sql.BLOB;
import org.hibernate.Hibernate;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.lob.SerializableBlob;
import cn.com.yyaccp.exam.dao.ReadOrWriter;
import cn.com.yyaccp.exam.hiberante.util.HibernateSessionFactory;
import cn.com.yyaccp.exam.pojo.Clsinfo;
import cn.com.yyaccp.exam.pojo.Student;
public class ReadOrWriterOperater implements ReadOrWriter {
Session session = null;
public Object read(int id) {
Object obj = null;
session = HibernateSessionFactory.currentSession(true);//获得当前的Session
Object blobObj = session.load(Clsinfo.class, new Long(id));//根据传入的ID找到对应的数据信息
if (blobObj != null) {
Clsinfo clsblob = (Clsinfo) blobObj;
Blob blob = clsblob.getClstu();
InputStream in;
try {
in = blob.getBinaryStream();//得到输入的二进制流
ObjectInputStream objIn = new ObjectInputStream(in);//用二进制对象流读取对象
obj = objIn.readObject();
objIn.close();
in.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
session.beginTransaction().commit();
return obj;
}
public void write(Object obj) {// 要插入blob字段的对象
Clsinfo clsinfo = new Clsinfo();
clsinfo.setClassname("t17");// clsInfo表中ClassName字段
clsinfo.setClstu(Hibernate.createBlob(new byte[1]));// clsInfo表中的blob字段用于存储student对象(预留一个字节的空间)
Session session;
Object id = null;
try {
session = HibernateSessionFactory.currentSession(true);// 获得当前的session
id = session.save(clsinfo);
session.flush();
session.refresh(clsinfo, LockMode.UPGRADE);// 锁定当前的行进行更新
SerializableBlob sb = (SerializableBlob) clsinfo.getClstu();
// 需要调用它的getWrappedBlob来转型
BLOB blob = (BLOB) sb.getWrappedBlob();
OutputStream out = blob.getBinaryOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(out);
objOut.writeObject(obj);
objOut.flush();
objOut.close();
out.close();
HibernateSessionFactory.commitTransaction();
HibernateSessionFactory.closeSession();
System.out.println("写入成功...");
// session.
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void update(int id, Object obj) {//obj为要更新的Blob字段的对象
Session session = null;
try {
session = HibernateSessionFactory.currentSession(true);
Object blobObj = session.load(Clsinfo.class, new Long(id));//根据ID找到对应的记录
// session.flush();
if (blobObj != null) {//如果找到的对象不为空
Clsinfo clsinfo = (Clsinfo) blobObj;//转换为Clsinfo对象
clsinfo.setClstu(Hibernate.createBlob(new byte[1]));
session.saveOrUpdate(clsinfo);//更新相关信息
session.flush();
session.refresh(blobObj, LockMode.UPGRADE);//锁定要更新的行
SerializableBlob sb = (SerializableBlob) clsinfo.getClstu();//先换成SerializableBlob然后转换为BloB对象
BLOB blob = (BLOB) sb.getWrappedBlob();//BLOB为oracle.sql.BLOB;
OutputStream out = blob.getBinaryOutputStream();//将对象转换成二进制输出流
ObjectOutputStream objOut = new ObjectOutputStream(out);
objOut.writeObject(obj);//用对象输出流写入数据中
objOut.flush();
objOut.close();
out.close();
}
HibernateSessionFactory.commitTransaction();
HibernateSessionFactory.closeSession();
System.out.println("更新成功...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Hiberante读取BLOB数据类型.
共25个文件
class:7个
java:7个
xml:5个
需积分: 0 1 下载量 160 浏览量
2008-11-04
14:11:02
上传
评论
收藏 17KB RAR 举报
温馨提示
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
资源推荐
资源详情
资源评论
收起资源包目录
Hiberante读取BLOB数据类型.rar (25个子文件)
BlobText
.project 1KB
.mymetadata 297B
WebRoot
WEB-INF
web.xml 286B
lib
classes
cn
com
yyaccp
exam
dao
ReadOrWriter.class 249B
test
text.class 807B
daoimp
ReadOrWriterOperater.class 4KB
hiberante
util
HibernateSessionFactory.class 2KB
InitHibernate.class 1KB
pojo
Clsinfo.class 1KB
Clsinfo.hbm.xml 914B
Student.class 774B
hibernate.cfg.xml 924B
META-INF
MANIFEST.MF 39B
database
blob.sql 406B
.myeclipse
src
cn
com
yyaccp
exam
dao
ReadOrWriter.java 245B
test
text.java 2KB
daoimp
ReadOrWriterOperater.java 4KB
hiberante
util
InitHibernate.java 2KB
HibernateSessionFactory.java 3KB
pojo
Clsinfo.java 1KB
Clsinfo.hbm.xml 914B
Student.java 370B
hibernate.cfg.xml 924B
.classpath 532B
.myhibernatedata 393B
共 25 条
- 1
资源评论
wuwuwuwuwuwuwu
- 粉丝: 4
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功