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机制解决
分享到:
相关推荐
spring+hibernate整合简单示例
hibernate存取oracle的clob
Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf
示例中包括:基于底层的JDBC对数据库的操作和利用hibernate对数据库操作的对比,其中hibernate的实体关系映射包括(一对多,多对多)还有与Spring的整合例子。
Spring与hibernate 整合 简单示例 Spring与hibernate 整合 简单示例
一个完整的hibernate小例子 仅供参考!
解决hibernate存取汉字小程序,Eclipse+hibernate3+oracle
spring webwork hibernate结合登录示例
Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942
有关jdbc+hibernate存取blob字段的知识
NULL 博文链接:https://ll-feng.iteye.com/blog/1908511
spring2.5.6与hibernate3.3整合示例,导入即可运行。运用注解、hibernateTemplate、声明式事务管理。包括所有需要jar包。
NULL 博文链接:https://whp0731.iteye.com/blog/355617
Spring整合Hibernate配置测试示例
maven+hibernate项目简单示例,用的eclipse新建的maven项目,修改pom.xml导入hibernate jar包,数据库用MySQL,表user自行新建即可
struts-2.3、spring2.5.6、hibernate3.3整合示例,源码,导入可运行
hibernate入门小示例,平台环境 myeclipse + oracle, 使用junit对hibernate的简单增删改查进行验证,并实现日志记录。
一个简单的 Hibernate 开发示例 仅仅是用到了hibernate