`
c05243033
  • 浏览: 24853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate处理long,blob字段

阅读更多
最近编程的时候遇到需要将文件存储到数据,就想到了Oracle的blob字段,但是在网上查询了一些资料,自己总结下,跟大家交流下,希望大家多多指教.
环境:jdk1.4+Spring2.5+hibernate3.1
如要hibernate能处理blob字段,则需要在配置数据源时加上如下代码:
	<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>
	<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
	  <property name="nativeJdbcExtractor">
	    <ref local="nativeJdbcExtractor"/>
	  </property>
	</bean>

同时将该bean注入到sessionFactory中:
<property name="lobHandler">
     		 <ref bean="oracleLobHandler"/>
  	    </property>


一.保存
如果是long字段,在hibernate的配置文件如下:
<property column="data" lazy="false" name="data" type="text"/>

如果是blob字段,在hibernate的配置文件如下:
<property column="blobdata" lazy="false" name="blobdata" type="blob"/>


对于long字段在程序中可以直接定义为String类型并按照String类型进行处理
对于blob字段在程序中就需要特殊处理,在java中需要将blob字段声明为java.sql.Blob类型,此处有两种方式:
1.以FileInputStream方式写入到数据库:
Blob blobdata = Hibernate.createBlob(FileInputStream);

2.以byte[]方式写入到数据库:
Blob blobdata = Hibernate.createBlob(byte[]);


二.查询
查询一直没有解决如何用hibernate查出数据,如果直接使用hibernate的方法进行查询并获取blob的值,则总是报需要登录数据的错误,这个问题如果有哪位高手知道处理的话希望不吝赐教.
String sql = "select blobdata from TABLE t where id=1"
					try{
						conn  = session.connection();
						pstmt = conn.prepareStatement(sql);
						rst	  = pstmt.executeQuery();
						if(rst.next()){
							Blob blob = rst.getBlob("blobdata");
							byte[] bt = blob.getBytes(1, (int) blob.length());
							
						}
					}catch(Exception e){
											}finally{
						rst.close();
						pstmt.close();
						conn.close();
						this.releaseSession(session);
					}
分享到:
评论
1 楼 monkmonk0 2011-10-19  
            

相关推荐

    hibernate对Blob类型字段进行数据添加.txt

    在 Java 应用开发中,尤其是使用 ORM 框架如 Hibernate 进行持久化层开发时,如何高效地处理 BLOB 类型字段成为了一个关键问题。 本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过...

    jdbc+hibernate存取blob字段

    在Java的数据库编程中,...总结来说,无论是使用JDBC还是Hibernate,处理Oracle数据库的BLOB字段都需要了解其特殊性,尤其是BLOB字段的创建和更新过程。正确地操作BLOB字段,能够有效地存储和管理大容量的二进制数据。

    关于在Hibernate中对于Clob,Blob字段的处理方法

    本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...

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

    例如,当保存BLOB字段时,可以先将文件内容读入`InputStream`,然后通过Hibernate的`Session`接口进行持久化: ```java InputStream inputStream = new FileInputStream("path/to/file"); session.saveOrUpdate...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...

    使用Hibernaet存储MYSQL表中BLOB字段的问题

    总结一下,处理Hibernate与MySQL BLOB字段的关键在于理解BLOB的特性和挑战,采用适当的数据处理策略,如流式操作、内存管理、事务控制以及数据库版本兼容性考虑。在实践中不断优化,可以提高代码的稳定性和性能。

    使用hibernate对oracle读取blob

    在实体类中,你可以定义一个Blob类型的属性来表示数据库中的Blob字段: ```java @Entity public class MediaEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Lob ...

    hibernate保存blob,clob对象

    接下来,我们需要在映射文件(.hbm.xml)中配置Blob字段,比如: ```xml &lt;hibernate-mapping&gt; &lt;!-- Blob类型的映射 --&gt; &lt;column name="PICTURE" length="1000000" sql-type="BLOB"/&gt; &lt;/hibernate...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    - LONG和LONG RAW:用于存储可变长的字符串数据和二进制数据,但有长度限制,每个表中只能有一个LONG字段,并且最长为2GB。 - CLOB(字符大对象):用于存储大型文本数据,与字符集相关联,支持文本型数据,如历史...

    JDBC+Hibernate将Blob数据写入Oracle

    然而,Blob字段的写入方式与普通字段有所不同,因为它有自己的游标(cursor),需要通过特定步骤获取并操作这个游标来完成数据的写入。 以下是一个简单的JDBC示例,展示了如何将一个文件写入Oracle数据库中的Blob...

    spring mvc+hibernate 图片存储至blob

    总结起来,"spring mvc+hibernate 图片存储至blob"这个主题涉及到Spring MVC处理文件上传、Hibernate将图片数据存入数据库BLOB字段、以及前后端交互等多个技术点。通过理解这些知识点,开发者可以构建一个完整的图片...

    Hibernate操作数据库大字段的示例(附源码及详细开发使用方法)。

    当处理大数据字段,如长文本、图片或视频等时,Hibernate提供了有效的方法来存储和检索这些数据。本示例将详细介绍如何在Hibernate中操作数据库的大字段。 首先,我们来理解“大字段”在数据库中的概念。在SQL标准...

    hibernate使用中与各种数据库字段类型对应类型训练

    本训练主要关注在使用Hibernate时如何处理与各种数据库字段类型的映射,这对于理解和优化数据库交互至关重要。 首先,我们要理解Hibernate的核心概念——对象关系映射(ORM)。ORM允许我们将数据库表结构映射到Java...

    Hiberante读取BLOB数据类型.

    在关系型数据库中,BLOB字段可以存储最多4GB的二进制数据。在Hibernate中,BLOB类型通常映射到Java的`java.sql.Blob`接口。 1. **配置映射** 在Hibernate的映射文件(.hbm.xml)或使用注解的方式,我们需要为BLOB...

    Blob和Clob使用例子

    在Hibernate的映射文件(通常是XML格式)中,我们需要为Blob字段配置相应的元素: ```xml &lt;hibernate-mapping&gt; &lt;blob name="avatar" column="avatar"/&gt; &lt;/hibernate-mapping&gt; ``` 在实际操作中,我们...

    hibernate动态映射表处理oracle的clob类型

    本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...

    Hibernate的demo

    在Hibernate中,我们可以通过Session接口的saveOrUpdate()方法来保存包含Blob字段的对象。读取Blob数据时,可以使用Blob的getBinaryStream()方法。以下是一个简单的示例: ```java // 保存含Blob对象的数据 User ...

Global site tag (gtag.js) - Google Analytics