hibernate大字段处理:以mysql为例
比如传张图片,把图片存到某个字段里。
POJO类里大字段类型为:[color=red]java.sql.Blob[/color]
1.Photo.java
2.Photo.hbm.xml
3.web层主要代码:
比如传张图片,把图片存到某个字段里。
POJO类里大字段类型为:[color=red]java.sql.Blob[/color]
1.Photo.java
import java.sql.Blob;
public class Photo implements java.io.Serializable {
private Integer pid;
private String pname;
private Blob photo;
public Photo() {
}
public Photo(String pname) {
this.pname = pname;
}
public Integer getPid() {
return this.pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getPname() {
return this.pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Blob getPhoto() {
return photo;
}
public void setPhoto(Blob photo) {
this.photo = photo;
}
}
2.Photo.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.pojo.Photo" table="photo" >
<id name="pid" type="java.lang.Integer">
<column name="pid" />
<generator class="native" />
</id>
<property name="pname" type="java.lang.String">
<column name="pname" length="10" not-null="true" />
</property>
<property name="photo" type="java.sql.Blob">
<column name="photo" />
</property>
</class>
</hibernate-mapping>
3.web层主要代码:
IndexForm indexForm = (IndexForm) form;
String pname = indexForm.getPanme();
FormFile photo = indexForm.getPhoto();
System.out.println(pname + " " + photo.getFileSize());
Photo p = new Photo();
p.setPname(pname);
try {
byte[] buf = photo.getFileData();
//通过Hibernate类将存图片内容的buf数组转成Blob类型
Blob ph = Hibernate.createBlob(buf);
p.setPhoto(ph);
PhotoDAO dao = new PhotoDAO();
dao.addPhoto(p);
//读取
Photo temp = dao.getByName(pname);
//通过java.sql.Blob.getBinaryStream()获得输入流,然后通过输出流输出到一个临时图片
InputStream in = temp.getPhoto().getBinaryStream();
OutputStream out = new FileOutputStream(new File("c:\\zk.jpg"));
in.read(buf);
out.write(buf);
in.close();
out.close();
request.getSession().setAttribute("link", "c:\\zk.jpg");
dao.closeSession();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}