Hibernate二进制或大文件类型数据和Oracle交互
//测试存储二进制文件
@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交互的更多相关文章
- 从Excel(CSV)文件导入数据到Oracle
步骤: 1.准备数据:在excel中构造出需要的数据2.将excel中的数据另存为文本文件(有制表符分隔的)3.将新保存到文本文件中的数据导入到pl*sql中在pl*sql中选择tools--text ...
- KingbaseES 时间类型数据和oracle时间类型的区别
Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...
- 【原创】用JAVA实现大文件上传及显示进度信息
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...
- PHP读取CSV大文件导入数据库的示例
对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象. 为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的. 下面这个函数是读取CSV文件中指 ...
- PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
CSV大文件的读取已经在前面讲述过了(PHP按行读取.处理较大CSV文件的代码实例),但是如何快速完整的操作大文件仍然还存在一些问题. 1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容 ...
- 用JAVA实现大文件上传及显示进度信息
一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ...
- java+大文件断点续传
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...
- Hadoop如何将TB级大文件的上传性能优化上百倍?
这篇文章,我们来看看,Hadoop的HDFS分布式文件系统的文件上传的性能优化. 首先,我们还是通过一张图来回顾一下文件上传的大概的原理. 由上图所示,文件上传的原理,其实说出来也简单. 比如有个TB ...
- 【c++基础】二进制格式输出char类型
前言 使用CAN通信时将信号转换为char类型进行传输,要查看传输的信息是否正确需要将char类型数据以二进制格式输出: code #include <iostream> int main ...
随机推荐
- 【QQ音乐Api】移花接木 打造自己的音乐电台
最近突发奇想想做个在线音乐小网页.需求很简单,如下 搜索歌曲 或 歌手 在线播放音乐 借用qq 或者 百度的 音乐接口 需求明确那就直接动手了 我首先尝试的百度音乐,但是不能在线播放(提示forbid ...
- 初学MyBatis.net
1.MyBatis.net介绍 MyBatis..net是一个简单,但是完整的ORM框架,它使你的实体对象与sql语句或者存储过程之间的映射变得很简单,并提供数据访问.包括两个主要框架 DataAcc ...
- nrf51822-主从通信分析1
建议看该教程前,先看一下 简单扫描器实现 教程 讲解基于sdk目录下central中的两个例子. 关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架. Main函数中完成初始化, 从机 ...
- struts ActionContext ThreadLocal
public class ActionContext implements Serializable The ActionContext is the context in which an Acti ...
- Provisioning Profile
什么是Provisioning Profile? 从字面翻译,Provisioning Profile就是配置文件的意思,它在开发者账号体系中所扮演的角色也是配置和验证的作用.如果你有开发者账号,可以 ...
- TCP connection status
A TCP connection progresses through a series of states during its lifetime. The following diagram il ...
- Xor Sum---hdu4825(01字典树模板)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4825 题意:有n个数m个查找,每个查找有一个数x, 从序列中找到一个数y,使得x异或y最大 ...
- PMP--案例解答要点
没有相关的管理流程或方针: 没有进行良好的策划: 资源不足(人.资金.设备和工具): 缺少培训,不具备相关的知识和技能要求: 项目干系人识别不充分,干系人没有充分的介入: 缺少配置管理.变更控制和版本 ...
- Introduction to Project Management(I)
Project management in the modern sense began in the early 1950s, although it has its roots further b ...
- jQuery的dom操作(二)转
addClass() 向匹配的元素添加指定的类名. after() 在匹配的元素之后插入内容. append() 向匹配的元素内部追加内容. appendTo() 向匹配的元素内部追加内容. attr ...