如何使用Hibernate将图片存取到MySQL数据库中实现高效图片管理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计987个文字,预计阅读时间需要4分钟。
一个网站在处理用户上传图片时常采用两种策略:一是直接将图片存储在数据库中的Blob字段;二是仅存储图片在服务器上的路径信息,图片本身存放在不同类别的文件中。
一般网站在处理用户上传图片时通常采用两种策略:一是直接把图片存入数据库中的Blob字段;二是数据库中只存储图片的在服务器上的路径信息,图片存放在分门别类的文件中,使用的时候从数据库hibernate存取图片示例(mysql)
一般网站在处理用户上传图片时通常采用两种策略:一是直接把图片存入数据库中的Blob字段;二是数据库中只存储图片的在服务器上的路径信息 ,图片存放在分门别类的文件中,使用的时候从数据库读取路径信息到页面img元素即可.在此不讨论两种方案的优劣,我只是写了个hibernate的例子 来实现第一种策略.例子很简单,t_user表主要两个字段,name和photo,其中photo字段类型为Blob.在此例中数据库我采用 mysql,oracle的Blob字段比较特殊,你必须自定义类型,具体的请自行搜索,这方面的资料很多.//User.java
package com.denny_blue.hibernate; import java.io.Serializable; import java.sql.Blob; public class User implements Serializable{ private Integer id; private String name; private Blob photo; /** * @return the id */ public User(){ } public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the photo */ public Blob getPhoto() { return photo; } /** * @param photo the photo to set */ public void setPhoto(Blob photo) { this.photo = photo; } }欢迎大家阅读《hibernate存取图片示范(mysql)》,跪求各位点评,by
类User有3个属性,id,name,photo,相应的getter和setter方法以及一个无参构造函数.应该注意的是photo的类型java.sql.Blob相应的user.hbm.xml应该如下:
对应的hibernate.cfg.xml配置文件,不再列出,请参照hibernate文档自行设定.OK,做了这一步,我们写个测试类来进行单元测试:
我们读取C盘目录下的test.gif并存储到数据库中,然后再取出来写入C:/out目录,此时你可以查看下数据表中photo显示为blob,表示已经成功存入.值的注意的代码片段就是:
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.www.1234xp.com/funing.html 欢迎留下您的宝贵建议】本文共计987个文字,预计阅读时间需要4分钟。
一个网站在处理用户上传图片时常采用两种策略:一是直接将图片存储在数据库中的Blob字段;二是仅存储图片在服务器上的路径信息,图片本身存放在不同类别的文件中。
一般网站在处理用户上传图片时通常采用两种策略:一是直接把图片存入数据库中的Blob字段;二是数据库中只存储图片的在服务器上的路径信息,图片存放在分门别类的文件中,使用的时候从数据库hibernate存取图片示例(mysql)
一般网站在处理用户上传图片时通常采用两种策略:一是直接把图片存入数据库中的Blob字段;二是数据库中只存储图片的在服务器上的路径信息 ,图片存放在分门别类的文件中,使用的时候从数据库读取路径信息到页面img元素即可.在此不讨论两种方案的优劣,我只是写了个hibernate的例子 来实现第一种策略.例子很简单,t_user表主要两个字段,name和photo,其中photo字段类型为Blob.在此例中数据库我采用 mysql,oracle的Blob字段比较特殊,你必须自定义类型,具体的请自行搜索,这方面的资料很多.//User.java
package com.denny_blue.hibernate; import java.io.Serializable; import java.sql.Blob; public class User implements Serializable{ private Integer id; private String name; private Blob photo; /** * @return the id */ public User(){ } public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the photo */ public Blob getPhoto() { return photo; } /** * @param photo the photo to set */ public void setPhoto(Blob photo) { this.photo = photo; } }欢迎大家阅读《hibernate存取图片示范(mysql)》,跪求各位点评,by
类User有3个属性,id,name,photo,相应的getter和setter方法以及一个无参构造函数.应该注意的是photo的类型java.sql.Blob相应的user.hbm.xml应该如下:
对应的hibernate.cfg.xml配置文件,不再列出,请参照hibernate文档自行设定.OK,做了这一步,我们写个测试类来进行单元测试:
我们读取C盘目录下的test.gif并存储到数据库中,然后再取出来写入C:/out目录,此时你可以查看下数据表中photo显示为blob,表示已经成功存入.值的注意的代码片段就是:
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.www.1234xp.com/funing.html 欢迎留下您的宝贵建议】
