`

关于使用Hibernate向数据库中存取java对象

阅读更多

1、向数据库中存入java对象
   //建立一个字节数组的输出流
   ByteArrayOutputStream byteOut=new ByteArrayOutputStream();
  //使用对象输出流将字节数组流包装起来
  ObjectOutputStream outObj=new ObjectOutputStream(byteOut);
  //使用对象输出流的writeObject方法将query对象写入到字节数组输出流中,query对象作为tss的一个属性存在
  outObj.writeObject(query) ; 
  //使用toByteArray()方法获得一个字节数组
  final byte[] objbytes=byteOut.toByteArray();

  Session session = this.getSession();

  //写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入所以必须先要创建一个空的BLOB对象
  tss.setQuery(Hibernate.createBlob(new byte[1]));//创建空的Blob对象
  Serializable s=session.save(tss);
  session.flush();//通过此方法强制执行插入操作

//通过refresh方法,强制Hibernate执行select for update
  session.refresh(tss, LockMode.UPGRADE);
        //向Blob中写入实际的内容
SerializableBlob sb = (SerializableBlob)tss.getQuery();  
java.sql.Blob wrapBlob = sb.getWrappedBlob();  

oracle.sql.BLOB blob=(oracle.sql.BLOB)wrapBlob;
OutputStream out = blob.getBinaryOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(out);
bos.write(objbytes, 0, objbytes.length);
bos.flush();
bos.close();
out.close();
byteOut.close();
outObj.close();

2、从数据库中取出query对象
SerializableBlob sb = (SerializableBlob)tss.getQuery();  
java.sql.Blob wrapBlob = sb.getWrappedBlob();
BLOB inblob = (BLOB)wrapBlob;
InputStream is = inblob.getBinaryStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte[] byte11 = new byte[inblob.getBufferSize()];
if(-1!=bis.read(byte11, 0, byte11.length));
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(byte11));
Query bq = (BooleanQuery)ois.readObject();
ois.close();
bis.close();
is.close();
分享到:
评论

相关推荐

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

    将Struts2与Hibernate结合进行Web应用开发,可以充分利用Struts2在页面数据展示和逻辑控制方面的优势,同时使用Hibernate进行数据持久化。在实际操作中,可以通过Hibernate实现Oracle数据库中BLOB数据的存储和删除...

    使用Hibernate连接MySql的入门小程序

    5. **编写主程序**:在`Main.java`中,使用Hibernate API进行数据库操作。 - 创建SessionFactory - 打开Session - 开始Transaction - 插入、查询、更新或删除数据 - 提交Transaction **七、运行程序** 编译并...

    利用Middlegen Hibernate3生成hbm.xml配置和java类

    标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需...理解如何使用Middlegen对于任何使用Hibernate进行数据库操作的Java开发者来说都是十分重要的。

    hibernate3.0 和数据库生成pojo类的工程方法

    POJO类是Java中简单、无特殊约束的普通类,它们不依赖于任何框架或库。在Hibernate中,POJO类用于表示数据库中的实体,每个类对应一个表,类的属性对应表的字段。 2. **Hibernate 3.0简介**: Hibernate 3.0是...

    Hibernate入门项目(环境搭建、配置及实现简单数据库存取)

    **Hibernate入门项目** 在本文中,我们将探讨如何搭建Hibernate环境,进行配置,并实现对数据库的简单存取。...继续深入学习,你将掌握更复杂的映射、查询和事务管理技巧,从而在实际项目中更加高效地使用Hibernate。

    Java应用中使用Hibernate.pdf

    Hibernate的核心理念是“Let Java objects hibernate in the relational database”,即让Java对象能够在关系数据库中“冬眠”,这意味着它能够将Java对象的实例与数据库中的记录进行映射,从而简化数据存取的过程。...

    Hibernate 3.2反向生成数据库文件

    Hibernate 3.2是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需编写大量的SQL代码即可实现数据的存取。在 Hibernate 3.2 中,一个非常实用的功能是反向工程(Reverse Engineering)...

    struts2+hibernate+数据库新闻发布系统

    Hibernate框架则是Java对象与数据库表之间的桥梁,它将数据操作封装在POJO(Plain Old Java Object)类中,通过ORM(Object-Relational Mapping)技术,实现了对象与SQL的解耦。在新闻发布的系统中,每个新闻实体...

    Hibernate+Struts数据库操作实例

    2. **定义实体类**:根据数据库表结构创建Java类,并使用Hibernate注解进行映射。 3. **配置Hibernate**:配置`persistence.xml`文件,指定实体类和数据源。 4. **编写DAO层**:定义数据访问对象(DAO),实现对...

    Hibernate-Extension Middlegen-Hibernate

    4. **整合到项目**:将生成的Java源代码和映射文件添加到项目中,然后就可以在Hibernate框架下直接使用这些对象进行数据库操作了。 5. **优化和维护**:在项目开发过程中,如果数据库结构发生变化,只需重新运行...

    Eclipse中Hibernate简单配置和使用

    Eclipse中配置和使用Hibernate框架是Java开发中常见的数据库持久化解决方案。本文将通过详细的步骤介绍Eclipse中配置和使用Hibernate框架,并提供一个简单的示例实现。 Hibernate简介 Hibernate是一个开放源代码的...

    达梦Hibernate方言2.0至4.0

    总的来说,“达梦Hibernate方言2.0至4.0”是一个帮助Java开发者在使用Hibernate处理达梦数据库时,能够充分利用Hibernate的高级特性并保持代码的简洁性和可维护性的工具。通过理解方言的作用以及如何在项目中正确...

    Hibernate开发实战讲解(源代码)Java源码

    【标题】"Hibernate开发实战讲解(源代码)Java源码" 涉及的主要知识点是Hibernate,这是一个在Java开发中广泛使用的对象关系映射(ORM)框架。它允许开发者使用面向对象的编程方式来操作数据库,极大地提高了开发效率...

    hibernate存取汉字小程序

    【hibernate存取汉字小程序】是一个典型的Java开发项目,主要使用了Eclipse IDE、Hibernate3 ORM框架以及Oracle数据库来处理中文字符的问题。在实际的软件开发中,尤其是在与数据库交互时,处理中文字符可能会遇到...

    hibernate中文文档 HTML格式

    3. 异步操作:通过使用Hibernate的异步API,可以在后台线程中执行数据库操作,不阻塞主线程。 4. 事件监听:可以注册监听器来响应特定的ORM事件,如对象的保存、更新或删除。 在“Hibernate中文文档 HTML格式”中,...

    Hibernate4中文帮助文档(中文教程)

    Hibernate 提供了一种在Java应用程序中持久化对象的方式,它通过映射Java类到数据库表,将复杂的SQL语句和事务管理自动化,大大简化了数据存取的工作。Hibernate支持JDBC,可以与任何兼容的Java EE或Java SE环境配合...

    hibernate 调用oracle函数

    Hibernate通过映射XML文件或注解将Java类和数据库表关联起来,使得对象可以直接存取到数据库中。 在Oracle数据库中,函数是一种自定义的可重用代码单元,可以接受参数并返回结果。当我们需要在Java应用中调用这些...

    java与不同数据库的连接

    1. 数据库驱动:在Java中连接数据库,首先需要对应的数据库驱动。每个数据库都有自己的驱动程序,例如,MySQL有com.mysql.jdbc.Driver,Oracle有oracle.jdbc.OracleDriver。驱动程序需要在程序中注册,通常是通过`...

Global site tag (gtag.js) - Google Analytics