1、配置hibernate:
1.1、配置hibernate的持久类文件中对应的字段为byte[]类型
2.2、配置hibernate的类映射文件中对应的字段type为org.springframework.orm.hibernate3.support.BlobByteArrayType
2、配置spring:
2.1、配置nativeJdbcExtractor,如下:
<!---->
2.2、配置oracleLobHandler
<!---->
2.3把oracleLobHandler加入sessionFactory中:
<!---->
3、总结:
正确配置以上两条,就可以像处理普通的对象一样处理oracle的大对象。而且可以方面的从oracle上移植到支持大对象的其他数据库上,屏蔽了不同数据库处理lob字段的差别;
4、扩展:
4.1、处理clob对象也很方便,在配置hibernate时把对应的类的属性字段配置为String,映射文件type配置为org.springframework.orm.hibernate3.support.ClobStringType就行了。
4.2、在web上用servlet输出文件:
response.setContentType("application/x-msdownload");
String filename = new String(filename.getBytes(), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment;" + " filename=" + filename);
ServletOutputStream os = response.getOutputStream();
os.write(object.getBlobField());
os.flush();
使用java写Oracle BLOB
在使用oracle时,经常会用到大对象large object,下面就是一个使用jdbc写数据库BLOB的代码:
Connection conn = null;
try {
Statement stmt;
String URL = "jdbc:oracle:thin:@ip:oracleSID";
String insert = "INSERT INTO table_anme(id, accessory) (SELECT sequence_name.nextval, EMPTY_BLOB() FROM dual)";
String update = "SELECT accessory FROM table_name where id = ? FOR UPDATE";
// set up the connection
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = (OracleConnection)DriverManager.getConnection(URL, "username", "password");
//discard the auto commit
conn.setAutoCommit(false);
stmt = conn.createStatement();
//insert a data item with a empty BLOB
stmt.executeUpdate(insert);
conn.commit();
//get the data item which inserts above
PreparedStatement pstmt = conn.prepareStatement(update);
pstmt.setLong(1, id_number);
ResultSet rs = pstmt.executeQuery();
rs.next();
//write content to BLOB
BLOB blob = ((OracleResultSet)rs).getBLOB("accessory");
OutputStream out = blob.getBinaryOutputStream();
InputStream in = new FileInputStream(new File("file_name"));
int size = blob.getBufferSize();
byte [] buffer = new byte[size];
int count = 0;
while((count = in.read(buffer)) != -1) {
out.write(buffer, 0, count);
}
in.close();
out.close();
conn.commit();conn.close();
} catch (......) {}
这段代码首先建立了一个含有空BLOG的数据,然后用<a href="http://w.mmclick.com/v.jsp?s=1001120"> getBinayOutputStream()获取输出流,把文件等信息写入数据库;如果要读出数据库中的BLOG,只要通过getBinaryStream生出一个输入流,然后写入指定的目的就ok了!</a>
分享到:
相关推荐
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
在这个名为“移动ssh项目(struts+spring+hibernate+oracle)”的压缩包中,我们可以看到一个利用这些技术构建的项目实例,结合Oracle数据库。以下是关于SSH框架及Oracle数据库的详细介绍: 1. Struts:Struts是MVC...
这确保了Spring和Hibernate能够正确地与Oracle数据库交互处理大对象。 ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> ... ``` 2. **定义...
struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!
在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...
### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...
Hibernate 用于持久化 `Tfile` 对象,其 `fileContent` 字段使用 `BlobByteArrayType` 类型,便于处理 Blob 数据。 2. **业务层**:处理业务逻辑,例如验证文件大小、类型等,以及添加、查询和删除文件记录。 3. **...
在Hibernate映射文件中,Blob字段的type设置为org.springframework.orm.hibernate3.support.BlobByteArrayType,以使用Spring提供的自定义类型。 **Hibernate框架**负责数据的持久化。在SSH架构中,Hibernate用于将...
Spring使用`OracleLobHandler`处理Oracle数据库中的Blob字段,实现跨数据库的兼容性。 3. **业务层**:Spring作为业务层,负责处理文件的保存和检索逻辑。通过`OracleLobHandler`,可以方便地将文件二进制数据持久...
6. **数据库层面的优化**:例如,使用Oracle数据库时,可以优化表结构、索引以及存储过程,以适应大字段的处理。 这个压缩包中的eclipse工程是一个实际的项目示例,你可以通过它来了解和实践上述策略。在实际应用中...
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...
在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
Spring、SpringMVC、Hibernate和Oracle是Java开发中常见的四大技术框架,它们各自在软件开发中扮演着重要的角色。下面是对这些技术的详细介绍。 **Spring框架**:Spring 是一个全面的后端应用开发框架,核心特性是...
对Blob大数据的操作——图片上传与显示 在本文中,我们将探讨如何使用SSH2框架将图片上传到Oracle数据库中,...同时,我们还探讨了如何在Service层使用事务处理代理,并如何配置Spring和Hibernate来支持Blob类型数据。
3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。 通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。 以上是Spring+...
【SSH+Oracle上传图片】项目详解 ...对于Oracle数据库,推荐使用`OracleLobHandler`,它专门处理Oracle数据库的Blob类型。将其注入到SessionFactory的lobHandler属性中,确保在处理Blob数据时使用正确的实现。 ```xml ...
总之,将Spring MVC与Oracle结合,处理图片二进制流,需要理解二进制流的概念,掌握文件读写、数据库操作以及Spring MVC的Controller和Service层处理逻辑。通过以上步骤,可以实现图片的上传、存储和展示,使得图片...