//测试存储二进制文件
 @Test
 public void test() throws IOException{
  InputStream in=new FileInputStream("E:\\test.txt");
  byte[] tblob=new byte[in.available()];
  in.read(tblob);
  in.close();
  Session ses = HibernateSessionFactory.getSession();
  System.out.println(ses.hashCode());
  ses.beginTransaction();
  Bigobject bb=new Bigobject("测试大文本", tblob);
  ses.save(bb);
  ses.getTransaction().commit();
  ses.close();
 }
 //测试读取二进制文件
 @Test
 public void readTest() throws IOException{
  Session ses = HibernateSessionFactory.getSession();
  Bigobject bigobject = (Bigobject) ses.get(Bigobject.class, 42);
  System.out.println(bigobject.getTclob());
  if(bigobject.getTblob()!=null){
   OutputStream os=new FileOutputStream("E:\\readbat.txt");
   os.write(bigobject.getTblob());
   os.close();
  }
  
 }
 //测试Blob和Clob类型
 @Test
 public void test1() throws Exception{
  Session ses=HibernateSessionFactory.getSession();
  ses.beginTransaction();
  Bigobject bob=new Bigobject();
  bob.setTclob(ses.getLobHelper().createClob(" "));//保存一个空的Clob实例
  bob.setTblob(ses.getLobHelper().createBlob(new byte[1]));//保存一个空的Blob实例
  ses.save(bob);//保存对象
  ses.flush();//刷新缓存
  ses.refresh(bob,LockMode.UPGRADE);//锁定记录
  if(bob.getTclob()!=null){
   Writer writer=bob.getTclob().setCharacterStream(0);
   writer.write("记不住啊");
   writer.close();
  }
  if(bob.getTblob()!=null){
   InputStream in=new FileInputStream("E:\\ceshi.txt");
   byte[] byteArray=new byte[in.available()];
   in.read(byteArray);
   in.close();
   //把文件中的二进制数据写到Blob对象中
   OutputStream os=bob.getTblob().setBinaryStream(1L);
   os.write(byteArray);
   os.close();
  }
  ses.getTransaction().commit();
  ses.close();
  
 }
 //测试Blob和Clob类型  从数据库读到硬盘
 @Test
 public void test2() throws Exception{
  Session ses=HibernateSessionFactory.getSession();
  Bigobject obj = (Bigobject) ses.get(Bigobject.class, 59);
  if(obj.getTclob()!=null){
   Reader reader=obj.getTclob().getCharacterStream();
   char[] cha=new char[1];
   StringBuilder sb=new StringBuilder();
   while(reader.read(cha)!=-1){
    sb.append(new String(cha));
   }
   System.out.println(sb.toString().trim());
   reader.close();
  }
  if(obj.getTblob()!=null){
   InputStream in=obj.getTblob().getBinaryStream();
   OutputStream os=new FileOutputStream("E:\\aaa.txt");
   int len=-1;
   while((len=in.read())!=-1){
    os.write(len);
   }
  }
    ses.close();
  
 }

Hibernate二进制或大文件类型数据和Oracle交互的更多相关文章

  1. 从Excel(CSV)文件导入数据到Oracle

    步骤: 1.准备数据:在excel中构造出需要的数据2.将excel中的数据另存为文本文件(有制表符分隔的)3.将新保存到文本文件中的数据导入到pl*sql中在pl*sql中选择tools--text ...

  2. KingbaseES 时间类型数据和oracle时间类型的区别

    Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...

  3. 【原创】用JAVA实现大文件上传及显示进度信息

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...

  4. PHP读取CSV大文件导入数据库的示例

    对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象. 为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的. 下面这个函数是读取CSV文件中指 ...

  5. PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

    CSV大文件的读取已经在前面讲述过了(PHP按行读取.处理较大CSV文件的代码实例),但是如何快速完整的操作大文件仍然还存在一些问题. 1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容 ...

  6. 用JAVA实现大文件上传及显示进度信息

    一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ...

  7. java+大文件断点续传

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

  8. Hadoop如何将TB级大文件的上传性能优化上百倍?

    这篇文章,我们来看看,Hadoop的HDFS分布式文件系统的文件上传的性能优化. 首先,我们还是通过一张图来回顾一下文件上传的大概的原理. 由上图所示,文件上传的原理,其实说出来也简单. 比如有个TB ...

  9. 【c++基础】二进制格式输出char类型

    前言 使用CAN通信时将信号转换为char类型进行传输,要查看传输的信息是否正确需要将char类型数据以二进制格式输出: code #include <iostream> int main ...

随机推荐

  1. 002_base64的编码实现

    一.先贴一张ASCII码的图 二.再贴一张base64转换规则的图 二.python代码实现.

  2. zepto源码--compact、flatten、camelize、dasherize、uniq--学习笔记

    1.compact 删除数组中的空元素(不是空字符串).undefined.null 在定义变量时,定义过filter = emptyArray.filter,即调用javascript原生的数组处理 ...

  3. Magento white screen or how XML can break your site?

    Magento white screen or how XML can break your site? by SANDO on 02. OCT, 2012 in MAGENTO, SMALL TIP ...

  4. 查询数据表,去除符合某些条件的记录,没有自动增长列(not exists)

    select distinct ccode,isnull(cexch_name,''),N'',N'',N'2014.03',0,1,1,1,12 from RP_bankrecp where not ...

  5. shell 使用for循环 启动后台任务

    为了统计多天的数据并按照天为文件名输出,写了脚本,脚本可以统计单天的数据.为了实现多天的同时进行采用 启动多个进程后台执行形式: 但是直接 执行的参数后面加上& 并不能解决,采用 echo & ...

  6. Selenium2学习-037-WebUI自动化实战实例-IE浏览器显示比例问题:org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 94%. It should be set to 100%

    好久没有写博文了,今天在给部门新人演示 Selenium WebDriver 启动其支持的各种浏览器时,启动 IE 时总是无法打开对应的百度网址,页面如下所示:

  7. linux压缩解压

    zip压缩文件 zip -r filename.zip filesdir zip -r filename.zip file1 file2 file3 /usr/work/school //将file1 ...

  8. Java日期时间处理常用方法

    虽然是老生常谈,但整理出来还是有点用. 1.由字符串时间得到Date类型时间 // 由字符串时间得到Date类型时间 public static Date getDateFrom(String str ...

  9. 设置tomcat的编码为utf-8

    <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" ...

  10. zabbix配置发送报警邮件

    配置邮件分为两种情况: 第一种:使用远端邮件服务器发送报警邮件 Linux系统版本:CentOS6.5-64 下载mailx: http://nchc.dl.sourceforge.net/proje ...