hibernate对clob和blob的操作

static Session session = HibernateSessionFactory.getSession();

 public boolean inserted(TUser obj) {

  Transaction tran = session.beginTransaction();
  session.save(obj);
  session.flush();//调用flush强制先执行select for update
  session.refresh(obj, LockMode.UPGRADE);
  try {
   SerializableBlob sb = (SerializableBlob) obj.getImage();
   java.sql.Blob wrapblob = sb.getWrappedBlob();
   if (wrapblob instanceof oracle.sql.BLOB) {
    //向Blob写入实际内容
    oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapblob;
    OutputStream output = blob.getBinaryOutputStream();
    //修改你要存入的信息
    FileInputStream input = new FileInputStream("E:/download/SPECIAL ENGLISH TV 2006 1203.wmv");
    byte[] buf = new byte[10240];// 做为10K的缓存写入
    int len;
    while ((len = input.read(buf)) > 0) {
     output.write(buf, 0, len);
    }
    output.close();
    input.close();
   }

   SerializableClob sc = (SerializableClob) obj.getResume();
   java.sql.Clob wrapclob = sc.getWrappedClob();
   if (wrapclob instanceof oracle.sql.CLOB) {
    oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapclob;
    java.io.Writer cout = clob.getCharacterOutputStream();
    File file = new File("e:/errors.txt");// 修改你要存入的文本
    FileInputStream fileintput = new FileInputStream(file);
    int read;
    while ((read = fileintput.read()) != -1) {
     cout.write(read);
    }
    fileintput.close();
    cout.close();
   }

   tran.commit();
   return true;
  } catch (Exception ex) {
   ex.printStackTrace();
   tran.rollback();
   return false;
  }
 }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Test t = new Test();
  TUser stu = new TUser();
  stu.setAge(new Integer("23"));
  stu.setName("zengbo");
  stu.setImage(Hibernate.createBlob(new byte[1]));
  stu.setResume(Hibernate.createClob(" "));//插入一个空的参数
  t.inserted(stu);
 }
}

 

事例2

public class Test2 {

 public static void main(String[] args) throws SQLException, IOException {
  Session session = HibernateSessionFactory.getSession();
  Transaction tx = session.beginTransaction();
  TUser user = new TUser();

  user.setAge((long) 24);
  user.setName("zengbo");
  user.setImage(Hibernate.createBlob(new byte[1]));
  user.setResume(Hibernate.createClob(""));
  session.save(user);
  session.flush();
  session.refresh(user, LockMode.UPGRADE);
  SerializableBlob sb = (SerializableBlob) user.getImage();
  java.sql.Blob wrapblob = sb.getWrappedBlob();
  oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapblob;
  OutputStream output = blob.getBinaryOutputStream();
  FileInputStream input = new FileInputStream("E:/download/UML.rar");
  byte[] b = new byte[10240];// 做为10K的缓存写入

  input.read(b);
  output.write(b);
  input.close();
  output.close();

  //resume由Clob改成String类型存入Clob就可以这样写
//  SerializableClob sc = (SerializableClob) user.getResume();
//  java.sql.Clob wrapclob = sc.getWrappedClob();
//  oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapclob;
//  java.io.Writer writer = clob.getCharacterOutputStream();
//  writer.write("This is the second clob");
//  session.save(user);
//  session.flush();
  tx.commit();
 }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值