//测试存储二进制文件
@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交互
时间: 2024-12-08 14:04:57
Hibernate二进制或大文件类型数据和Oracle交互的相关文章
碰到诡异问题,求助大能解答,关于表单提交大文件无限数据提交问题
服务器环境 php环境 出现情况:上传30M文件的时候 本地数据一直在提交,观察服务器io 也一直有下载流量.但是就没有个结束,php输出 $_FILES,也不会执行到这行代码,比如我提交30M文件表单提交,但是流量估计超过好几百M也不会停止,反正不人为停止脚步,就是不断在数据交互.请问有大哥碰到这情况吗?是否哪些php配置没配置对 大文件上传问题已解决 以我测试上传32M文件大小为例 php 运行方式 FPM-FCGI php.ini upload_max_filesize = 64M//上传
Jdbc插入date类型数据到oracle中
导入数据库jar包,路径如下: E:\oracle\product\10.1.0\Db_3\jdbc\lib\ojdbc14.jar 建表语句如下: create table t_user( id int primary key, username varchar(40), password varchar(16), phone varchar(40), address varchar(255), createdate date ) Jdbc代码如下: public void save(){ C
finfo_open函数不支持,通过二进制流获取文件类型
public function getMime() { // $finfo = finfo_open(FILEINFO_MIME_TYPE); // return finfo_file($finfo, $this->filename); $fp=fopen($this->filename,'r');///实际是image/png $bin = fread($fp, 2); //只读2字节 fclose($fp); $str_info = @unpack("C2chars",
Oracle bigfile 大文件表空间
Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成.表空间内的逻辑存储单位为段(segment),段又可以继续划分为数据扩展(extent).而数据扩展是由一组连续的数据块(datablock)构成. 大文件表空间 在Oracle中用户可以创建大文件表空间(bigfile tablespace).这样Oracle数据库使用的表空间(tablespace)可以由一个单一的大文件构成,而不是若干个小数据文件.这使Oracle可以发挥64位系统的能力,创建.管理超大
【原创】用JAVA实现大文件上传及显示进度信息
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框架中使用类似CommonsMultipartFile对象处理表二进制文件信息. 而.NET 中使用HtmlInputFile/ HttpPostedFile对象处理二进制文件信息. 优点:使用框架内置对象可以很方便的
PHP读取CSV大文件导入数据库的示例
对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象. 为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的. 下面这个函数是读取CSV文件中指定的某几行数据: /** * csv_get_lines 读取CSV文件中的某几行数据 * @param $csvfile csv文件路径 * @param $lines 读取行数 * @param $offset 起始行数 * @return array * */ function csv_get
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
CSV大文件的读取已经在前面讲述过了(PHP按行读取.处理较大CSV文件的代码实例),但是如何快速完整的操作大文件仍然还存在一些问题. 1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行:办法二:使用fgets一行一行遍历,得出总行数,这种办法比办法一好一些,但大文件仍有超时的可能:办法三:借助SplFileObject类,直接将指针定位到文件末尾,通过SplFileObject::key方法获取总行数,这种办
大文件的读写方法
import java.io.*; class Test{ public static void main(String args[]){ FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream("F:/Android/Java4Android/33/src/a.txt"); //假设每次读取1024字节, byte [] b = new byte[1024]; fo
java实现大文件上传
文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用HTML5的API,对文件上传进行渐进式增强: * iframe上传 * ajax上传 * 进度条 * 文件预览 * 拖放上传 1.1 传统形式 文件上传的传统形式,是使用表单元素file,参考 http://www.ruanyifeng.com/blog/2012/08/file_upload.h