`
- 浏览:
56726 次
- 性别:
- 来自:
南京
-
关于使用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();
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping ,在Java对象与关系数据库之间 建立某种映射,以实现直接存取Java对象 ! 为什么要使用Hibernate? 既然Hibernate是关于Java对象和关系数据库...
如果我们希望使用Hibernate提供的所有特性,那么所有的持久化实体(persistent entity)类(这里也包括一些次要依赖类)都需要一个这样的标识符属性。而事实上,大多数应用程序(特别是web应用程序)都需要通过...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...
它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经颇为流行,Hibernate+Spring往往是很多Java公司招聘的要求。...
1.4 java中的一些常用词汇 1.5 J2SE学习中的30个基本概念 1.6 Java线程 1.7 Java 5.0多线程编程 1.8 Java Socket编程 1.9 Java的内存泄漏 1.10 抽象类与接口的区别 1.11 Java变量类型间的相互转换 2 JAVA与WEB 2.1 ...
NHibernate为你处理这些,你不用自己写SQL去数据库存取对象。你的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理数据的时间. ...
而hibernate可以把我们的关系型数据库转换成我们在JAVA中的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库中的用户名取出来。 Spring J2EE框架被大规模地...
1.4 java中的一些常用词汇 56 1.5 J2SE学习中的30个基本概念 58 1.6 Java线程 60 1.7 Java 5.0多线程编程 65 1.8 Java Socket编程 80 1.9 Java的内存泄漏 85 1.10 抽象类与接口的区别 86 1.11 Java变量类型间的相互...
------------看了绝对不后悔,下载后吱个声---------...NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。
答:JDO是java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。 CORBA? 答:CORBA标准是公共对象请求代理结构,用途为:用不同的程序设计语言书写,在不同的...
在Java中,数据库存取技术 只能通过JDBC 访问数据库: JDBC访问数据库的形式主要有两种: 1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle). 2).间接地使用JDBC的API去访问数据库服务器. 第三方O/R...
在db browser视图中对myeclipse derby单击右键,选择open connection启动系统默认derby数据库(注:为了测试hibernate,所以需要存取myeclipse自带默认数据库) 4.回到myeclipse java enterprise perspective( 企业...
在db browser视图中对myeclipse derby单击右键,选择open connection启动系统默认derby数据库(注:为了测试hibernate,所以需要存取myeclipse自带默认数据库) 4.回到myeclipse java enterprise perspective( 企业视图...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
案例3-2 在Oracle数据库中存取图片 81 3.3 基于SQL Server数据库系统的开发 86 3.3.1 SQL Server的安装 86 3.3.2 启动SQL Server服务 88 3.3.3 SQL Server主要集成环境简介 88 案例3-3 连接SQL Server...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...
4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量...