FileInputStream in=new FileInputStream("C://test.gif");
Blob photo=Hibernate
.createBlob
(in);
我们这里是从磁盘中读取图片,实际应用中你可以利用上传组件得到图片的2进制数据流,并利用Hibernate
.createBlob
方法来构造相应的Blob对象.而取图片则使用
InputStream in=photo.getBinaryStream();
这只是个简单的测试类,如果我想从数据库中取出图片并现实在页面上该如何做呢?其实也很简单,我们先要写一个servlet,在它的service方法中取出图片,并"画"到指定页面上.
package com.easyjf.asp.action;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.denny)blue.hibernate.User;
public class Test extends HttpServlet {
/**
* Destruction of the servlet. <br>
*/
private Session session;
public void destroy() {
try{
session.close();
}catch(HibernateException e){
e.printStackTrace();
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
try{
Configuration config=new Configuration().configure();
SessionFactory sf=config.buildSessionFactory();
session=sf.openSession();
}catch(HibernateException e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
try{
User user=(User)session.load(User.class, new Integer(1));
Blob photo=user.getPhoto();
InputStream in=photo.getBinaryStream();
OutputStream out=response.getOutputStream();
byte [] buf=new byte[1024];
int len;
while((len=in.read(buf))!=-1){
out.write(buf, 0, len);
}
in.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
通过response.getOutputStream取得输出流,其他就与上段代码一致.servlet写好了,怎么在页面调用呢?那就更简单啦,直接在页面的img标签的src属性上调用该servlet即可,如:
<img id="test" src="/servlet/Test"/>
简单的例子,希望对初学者有帮助.
附记:如果不希望在servlet(或者action之类)中进行保存操作,希望在DAO进行此操作,那么InputStream的关闭问题可以通过hibernate
的interceptor机制解决
分享到:
相关推荐
这个“Hibernate学习代码示例”压缩包文件为初学者提供了丰富的学习资源,帮助他们理解并掌握Hibernate的核心概念和实际应用。 首先,让我们详细探讨一下Hibernate的基础知识。Hibernate是一个开源的ORM框架,它的...
在本示例中,我们将探讨如何使用 Hibernate 进行基本的数据存取操作。 **环境准备** 在开始 Hibernate 示例之前,我们需要确保以下组件已经准备就绪: 1. JDK:确保安装了 Java 开发环境,并设置好 `JAVA_HOME` ...
### Hibernate 存取 Oracle 的 CLOB 在 Java 开发中,使用 Hibernate 框架进行数据库操作是非常常见的。其中,处理 Oracle 数据库中的 CLOB 类型数据是一项重要的技能。CLOB(Character Large Object)是一种用于...
在Java的数据库编程中,有时我们需要处理存储大量二进制数据的情况,比如图片、音频或视频文件等。这种数据通常会被存储在BLOB(Binary Large Object)类型的字段中。本篇将详细介绍如何使用JDBC(Java Database ...
在运行示例前,你需要创建对应的数据库和表,并配置项目的数据库连接信息,以确保数据能正确地存取。 总的来说,这个"Struts2+Spring3+Hibernate3学习示例"是一个完整的Java Web开发基础架构,它展示了如何集成这三...
测试类会创建并操作持久化对象,调用辅助类的方法,验证数据是否正确地存取到数据库中。例如,创建一个新的User对象,保存到数据库,然后查询验证其是否成功存储。 5. **配置文件(Hibernate.cfg.xml)**:每个...
标题中的“hibernate存取json数据的代码分析”指的是在Java开发中,使用Hibernate框架来存储和检索JSON格式的数据。Hibernate是一个强大的ORM(对象关系映射)框架,它允许开发者将Java对象直接映射到数据库表,但在...
在多表操作中,这三个框架协同工作,使得数据的存取和业务逻辑的处理变得更加便捷。以下将详细介绍如何利用Struts2、Hibernate和Spring进行多表操作: 1. **Struts2**:作为前端控制器,Struts2接收用户的HTTP请求...
在Java世界中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是底层的数据存取。Eclipse作为一款强大的Java集成开发环境(IDE),为开发者提供了丰富的插件...
标题"spring+hibernate整合demo"表明这是一个示例项目,展示了如何将Spring和Hibernate这两个框架结合使用。整合Spring和Hibernate可以使应用程序更易于管理,因为Spring可以控制Hibernate的生命周期,并提供事务...
Hibernate 是一款强大的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是繁琐的数据存取。这个“Hibernate简单的demo”是为了帮助初学者理解并快速上手Hibernate框架而设计的。 **...
这里我们可以理解为,这是一个关于Hibernate框架的示例项目,它使用了Microsoft SQL Server 2008作为后端数据库。Hibernate是Java开发中常用的一个对象关系映射(ORM)框架,它能够将Java类与数据库表进行映射,简化...
例如,一个在线聊天室应用,用户发送的消息通过WebSocket实时传递给其他在线用户,同时这些消息在数据库中的存取则由Spring和Hibernate协同完成。 5. **源码和工具**: 标签“源码”意味着这个示例可能包含实际的...
在这个例子中,我们可能会看到如何创建实体类、配置Hibernate的XML映射文件,以及如何在代码中使用SessionFactory和Session来存取数据。 【标签解析】 "Hibernate"标签明确了讨论的主题,即Hibernate ORM框架。这个...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程模型来操作数据库,从而简化了Java应用程序中的数据存取工作。在Java世界中,Hibernate 已经成为了开发人员处理数据库交互的标准...
在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是底层的数据存取细节。本教程将深入探讨如何使用Hibernate构建一个完整的CRUD(创建、读取、...
通过ORM技术,Hibernate能够在Java对象和关系数据库之间建立一种映射关系,使得开发人员可以直接操作Java对象来进行数据的存取,而无需编写复杂的SQL语句。 #### 二、为什么选择Hibernate? 1. **减少SQL编写**:...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程模型来操作数据库,从而简化了Java应用程序中的数据存取工作。在Java世界里,Hibernate 已经成为了开发人员处理数据库交互的标准...
在"Hibernate 参考实例"中,我们将深入探讨如何使用Hibernate进行数据存取,包括基本的配置、实体类的创建、映射文件的编写、Session的使用以及查询操作。下面将详细介绍这些关键知识点。 1. **基本配置**: 使用...
1. **Hibernate存取JSON数据(换一种思路来存取数据)** 在某些场景下,如订单系统中存储优惠信息,这些信息可能是只读且不需频繁变更的文本数据。传统的做法可能涉及创建关联表,但这可能导致不必要的复杂性。一个...