`

用hibernate向oracle读取blob数据类型为并下载到本地

阅读更多

向Oracle读取16进制byte[]数据

这种方法只能处理总大小小于6M的数据(在默认的java虚拟机设置下)。 

①持久化类:

 

public class Mail implements Serializable {
	/**
	 * 主键
	 */
	private int id;
	/**
	 * 即将传入数据库中的文件
	 */
	private byte[] filedata;
/*此处省略get、set*/
}

 ②持久化类与hibernate的映射文件:持久化类.hbm.xml

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
	<class name="com.entity.Mail" table="mail" schema="sr">
		<!-- 主键 -->
		<id name="id" column="id" type="integer">
			<!-- 设置主键的唯一性 -->
			<generator class="assigned"></generator>
		</id>
		<!-- 字段 -->		
		<property name="filedata" type="binary" column="uploadfile"></property>
	</class>
</hibernate-mapping>

 ③HibernateUtil.java文件(这个不用去理解复制下来就可以)   

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}

 ④用hibernate来读取并下载到本地:

public class TheMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//例行公事的两句,不要忘了任何hibernate操作都要用到的
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tran = session.beginTransaction();
		
		File forDownFile = new File("D:/被下载的数据.jpg");
		//从数据库请求数据
		Mail mail = (Mail) session.load(Mail.class, 4);
//如果不要求下载那么写到这里已经足够
		FileOutputStream fos = null;
		try {
			//载入文件路径
			fos = new FileOutputStream(forDownFile);
			//写入文件数据
			fos.write(mail.getFiledata());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				//一定不要忘了释放资源
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}

}

 

 

 

分享到:
评论

相关推荐

    使用hibernate对oracle读取blob

    当需要从数据库读取Blob时,可以使用Hibernate的`Session`对象来获取实体,Blob内容会被自动读取: ```java MediaEntity media = session.get(MediaEntity.class, id); InputStream blobInputStream = media....

    JDBC+Hibernate将Blob数据写入Oracle

    随后,通过读取本地文件(本例中是"oraclejdbc.jar")的数据,将其写入到BLOB中。这里值得注意的是,写入数据前后的事务控制,使用`conn.setAutoCommit(false)`关闭自动提交,确保所有操作作为一个完整的事务处理,...

    Hibernate读取blob字段

    综上所述,使用Hibernate读取Blob字段涉及到配置映射文件、定义实体类中的Blob属性、执行查询以及流式处理Blob数据。理解这些概念和实践方法,可以帮助我们有效地管理和操作大数据类型的持久化对象。在实际项目中,...

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

    在Java开发中,有时我们需要存储二进制大数据,如图片、视频或文档,这时Oracle数据库中的Blob类型就显得尤为重要。Blob(Binary Large Object)是Oracle用来存储大对象数据的类型,它可以高效地处理大量的二进制...

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

    本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过实际代码示例来展示具体的操作步骤。 #### Hibernate Blob 数据处理原理 在 Hibernate 中,Blob 类型的字段通常被映射为 `java....

    Hibernate对BLOB CLOB操作

    为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate提供的方法。例如,你可以使用FileInputStream读取文件,然后将它转换为BLOB,类似地,使用...

    oracle,weblogic读写blob

    例如,可以使用 `FileReader.readAsArrayBuffer` 读取 BLOB 数据,然后转换为其他格式,或者使用 `fetch` API 从服务器获取并处理 BLOB 数据。 当在 WebLogic 上部署的应用需要与 Oracle 数据库交互时,需确保 ...

    oracle+hibernate 处理blob +uploadify实例

    `photo`属性使用`BlobByteArrayType`类型,这允许Hibernate将字节数组转换为Blob类型,并存储在`PHOTO`列中。 ```xml &lt;hibernate-mapping&gt; &lt;!-- ... --&gt; ...

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

    在Oracle数据库中,Hibernate提供了与这些数据类型的交互方式。本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`...

    hibernate向oracle插入图片

    本文将详细介绍如何利用Hibernate框架将图片数据插入Oracle数据库,并在需要时读取出来。 【一】Hibernate简介 Hibernate是一个优秀的持久化框架,它简化了Java应用程序与数据库之间的交互。通过使用Hibernate,...

    Hibernate操作Oarcle中Clob、Blob字段小结

    这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...

    jdbc+hibernate存取blob字段

    你可能需要定义一个实体类,包含BLOB类型的属性,并使用Hibernate的Session接口来保存或更新对象。例如: ```java @Entity public class TestEntity { @Id private Long id; private String name; @Lob ...

    hibernate保存blob,clob对象

    总结,Hibernate通过`@Lob`注解支持BLOB和CLOB的持久化,开发者需要适当地将数据转换为对应的对象类型,然后使用Hibernate的CRUD操作进行保存和检索。同时,要注意性能优化,如懒加载和数据库特定的最佳实践。

    详解jdbc实现对CLOB和BLOB数据类型的操作

    对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...

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

    - 使用Blob/Clob接口:直接操作Clob接口进行读写,而不是将其转换为字符串或其他数据类型,以减少转换开销。 通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际...

    spring+hibernate操作oracle的clob字段

    在Java实体类中,表示CLOB字段的属性应为`String`类型,这样可以直接存储和读取文本内容。在Hibernate的映射文件中,使用`org.springframework.orm.hibernate3.support.ClobStringType`类型来映射这个属性,如下所...

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

    在Oracle数据库中,LOB字段主要有BLOB(Binary Large Object)和CLOB(Character Large Object)两种类型,分别用于存储二进制和字符数据。处理这些字段时,我们需要配置Hibernate的实体类和映射文件。 在实体类中...

Global site tag (gtag.js) - Google Analytics