`
100Air
  • 浏览: 118887 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论

使用spring+hibernate处理oracle BLOB

阅读更多

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>

分享到:
评论

相关推荐

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    移动ssh项目(struts+spring+hibernate+oracle).zip

    在这个名为“移动ssh项目(struts+spring+hibernate+oracle)”的压缩包中,我们可以看到一个利用这些技术构建的项目实例,结合Oracle数据库。以下是关于SSH框架及Oracle数据库的详细介绍: 1. Struts:Struts是MVC...

    spring+hibernate操作oracle的clob字段

    这确保了Spring和Hibernate能够正确地与Oracle数据库交互处理大对象。 ```xml &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt; ... ``` 2. **定义...

    struts+hibernate+spring+blob

    struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!

    oracle+hibernate 处理blob +uploadify实例

    在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...

    spring+hibernate 解决大字段(clob)

    ### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...

    spring+struts+hibernate实现文件的上传和下载

    Hibernate 用于持久化 `Tfile` 对象,其 `fileContent` 字段使用 `BlobByteArrayType` 类型,便于处理 Blob 数据。 2. **业务层**:处理业务逻辑,例如验证文件大小、类型等,以及添加、查询和删除文件记录。 3. **...

    Struts+Spring+Hibernate开发实例祥解

    在Hibernate映射文件中,Blob字段的type设置为org.springframework.orm.hibernate3.support.BlobByteArrayType,以使用Spring提供的自定义类型。 **Hibernate框架**负责数据的持久化。在SSH架构中,Hibernate用于将...

    Struts+Spring+Hibernate实现上传下载

    Spring使用`OracleLobHandler`处理Oracle数据库中的Blob字段,实现跨数据库的兼容性。 3. **业务层**:Spring作为业务层,负责处理文件的保存和检索逻辑。通过`OracleLobHandler`,可以方便地将文件二进制数据持久...

    spring1.2+hibernate3对大字段的处理实例,供大家学习与交流,可直接运行

    6. **数据库层面的优化**:例如,使用Oracle数据库时,可以优化表结构、索引以及存储过程,以适应大字段的处理。 这个压缩包中的eclipse工程是一个实际的项目示例,你可以通过它来了解和实践上述策略。在实际应用中...

    spring+hbernate对clob、blob字段的处理

    一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...

    spring1.2+hibernate2对大字段的处理实例

    在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。

    Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件)(原来2分的,现在免费了!!给评分哦!!)

    Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!

    Spring,SpringMVC,Hibernate,Oracle知识汇总

    Spring、SpringMVC、Hibernate和Oracle是Java开发中常见的四大技术框架,它们各自在软件开发中扮演着重要的角色。下面是对这些技术的详细介绍。 **Spring框架**:Spring 是一个全面的后端应用开发框架,核心特性是...

    对blob大数据的操作——图片上传与显示*(自己实践可用)

    对Blob大数据的操作——图片上传与显示 在本文中,我们将探讨如何使用SSH2框架将图片上传到Oracle数据库中,...同时,我们还探讨了如何在Service层使用事务处理代理,并如何配置Spring和Hibernate来支持Blob类型数据。

    ssh(structs,spring,hibernate)框架中的上传下载

    3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。  通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。  以上是Spring+...

    SSH+Oracle上传图片

    【SSH+Oracle上传图片】项目详解 ...对于Oracle数据库,推荐使用`OracleLobHandler`,它专门处理Oracle数据库的Blob类型。将其注入到SessionFactory的lobHandler属性中,确保在处理Blob数据时使用正确的实现。 ```xml ...

    springMvc+Oracle的图片转二进制流

    总之,将Spring MVC与Oracle结合,处理图片二进制流,需要理解二进制流的概念,掌握文件读写、数据库操作以及Spring MVC的Controller和Service层处理逻辑。通过以上步骤,可以实现图片的上传、存储和展示,使得图片...

Global site tag (gtag.js) - Google Analytics