向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(); } } } }
相关推荐
当需要从数据库读取Blob时,可以使用Hibernate的`Session`对象来获取实体,Blob内容会被自动读取: ```java MediaEntity media = session.get(MediaEntity.class, id); InputStream blobInputStream = media....
随后,通过读取本地文件(本例中是"oraclejdbc.jar")的数据,将其写入到BLOB中。这里值得注意的是,写入数据前后的事务控制,使用`conn.setAutoCommit(false)`关闭自动提交,确保所有操作作为一个完整的事务处理,...
综上所述,使用Hibernate读取Blob字段涉及到配置映射文件、定义实体类中的Blob属性、执行查询以及流式处理Blob数据。理解这些概念和实践方法,可以帮助我们有效地管理和操作大数据类型的持久化对象。在实际项目中,...
在Java开发中,有时我们需要存储二进制大数据,如图片、视频或文档,这时Oracle数据库中的Blob类型就显得尤为重要。Blob(Binary Large Object)是Oracle用来存储大对象数据的类型,它可以高效地处理大量的二进制...
本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过实际代码示例来展示具体的操作步骤。 #### Hibernate Blob 数据处理原理 在 Hibernate 中,Blob 类型的字段通常被映射为 `java....
为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate提供的方法。例如,你可以使用FileInputStream读取文件,然后将它转换为BLOB,类似地,使用...
例如,可以使用 `FileReader.readAsArrayBuffer` 读取 BLOB 数据,然后转换为其他格式,或者使用 `fetch` API 从服务器获取并处理 BLOB 数据。 当在 WebLogic 上部署的应用需要与 Oracle 数据库交互时,需确保 ...
`photo`属性使用`BlobByteArrayType`类型,这允许Hibernate将字节数组转换为Blob类型,并存储在`PHOTO`列中。 ```xml <hibernate-mapping> <!-- ... --> ...
在Oracle数据库中,Hibernate提供了与这些数据类型的交互方式。本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`...
本文将详细介绍如何利用Hibernate框架将图片数据插入Oracle数据库,并在需要时读取出来。 【一】Hibernate简介 Hibernate是一个优秀的持久化框架,它简化了Java应用程序与数据库之间的交互。通过使用Hibernate,...
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
你可能需要定义一个实体类,包含BLOB类型的属性,并使用Hibernate的Session接口来保存或更新对象。例如: ```java @Entity public class TestEntity { @Id private Long id; private String name; @Lob ...
总结,Hibernate通过`@Lob`注解支持BLOB和CLOB的持久化,开发者需要适当地将数据转换为对应的对象类型,然后使用Hibernate的CRUD操作进行保存和检索。同时,要注意性能优化,如懒加载和数据库特定的最佳实践。
对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...
- 使用Blob/Clob接口:直接操作Clob接口进行读写,而不是将其转换为字符串或其他数据类型,以减少转换开销。 通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际...
在Java实体类中,表示CLOB字段的属性应为`String`类型,这样可以直接存储和读取文本内容。在Hibernate的映射文件中,使用`org.springframework.orm.hibernate3.support.ClobStringType`类型来映射这个属性,如下所...
在Oracle数据库中,LOB字段主要有BLOB(Binary Large Object)和CLOB(Character Large Object)两种类型,分别用于存储二进制和字符数据。处理这些字段时,我们需要配置Hibernate的实体类和映射文件。 在实体类中...