hibernate大字段处理:以mysql为例
比如传张图片,把图片存到某个字段里。
POJO类里大字段类型为:
java.sql.Blob
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();
}
分享到:
相关推荐
### Hibernate根据字段生成数据库表 #### 一、概述 在软件开发过程中,特别是在进行多数据库支持的应用程序开发时,我们经常需要将同一套代码部署到不同的数据库系统上。这种情况下,手动为每个数据库创建相同的表...
本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...
本篇将详细讲解如何使用Hibernate进行查询,特别是针对数据表中的一个特定字段。 一、Hibernate简介 Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化...
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
这时,我们需要创建自定义的Hibernate类型来处理这些特殊的字段。 创建自定义类型通常包括以下步骤: 1. **定义Java类**:为自定义字段创建一个Java类,这个类将封装特定的数据结构。例如,如果我们有一个日期范围...
本训练主要关注在使用Hibernate时如何处理与各种数据库字段类型的映射,这对于理解和优化数据库交互至关重要。 首先,我们要理解Hibernate的核心概念——对象关系映射(ORM)。ORM允许我们将数据库表结构映射到Java...
4. 在Hibernate的配置文件中添加"hibernate.connection.SetBigStringTryClob"属性,这对于Oracle数据库是必须的,以确保可以将大字符串存储为Clob类型。 5. 进行存取测试以验证配置的有效性。 传统存储方式则是将...
在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。
总结来说,"spring1.2+hibernate3对大字段的处理实例"是一个宝贵的教育资源,它涵盖了Spring和Hibernate在处理大字段时的关键技术,以及如何在Eclipse环境中实现这些技术。通过对这个实例的学习和研究,开发者能够...
在Hibernate配置文件(hibernate.cfg.xml)中,确保已经正确设置了数据库连接参数,并且JDBC驱动支持大字段的处理。对于支持大字段的数据库,如MySQL,Oracle等,通常不需要额外配置。 **二、实体类** 在实体类中...
综上所述,使用Hibernate读取Blob字段涉及到配置映射文件、定义实体类中的Blob属性、执行查询以及流式处理Blob数据。理解这些概念和实践方法,可以帮助我们有效地管理和操作大数据类型的持久化对象。在实际项目中,...
标题中的“注意hibernate查单一字段和查两个以上的字段...开发者需要考虑查询的效率,特别是在处理大数据量时,避免无谓的数据库交互。同时,合理利用ORM框架提供的特性,如缓存和预加载,可以显著改善应用程序的性能。
在处理特定类型的数据库字段时,比如`TEXT`字段,Hibernate可能需要使用特定的方言(Dialect)来确保正确地进行操作。本文将深入探讨如何使Hibernate支持MySQL中的`TEXT`字段,以及`MYSQLDialect.java`在这个过程中...
使用Oracle JDBC驱动程序的一个优点是,它支持流式处理,这意味着你可以避免一次性加载整个Blob或Clob到内存中,这对于处理大文件非常有用。例如,你可以通过`setBinaryStream`和`getBinaryStream`方法读写Blob数据...
在Java的持久化框架Hibernate中,处理大数据字段,如文本、图像或者其他大量数据,通常涉及到CLOB(Character Large Object)和BLOB(Binary Large Object)类型。这些类型用于存储数据库中的大文本或二进制数据。...
在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...
在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 ...
- 在处理大体积 Blob 数据时,应注意优化性能,比如采用流式读写的方式减少内存占用。 3. **数据库兼容性**: - 当应用需要支持多种数据库时,需要特别注意处理 Blob 数据时的兼容性问题。 4. **异常处理**: -...
本实例主要探讨如何利用Hibernate和Struts框架来处理MySQL数据库中的BLOB字段,实现文件的上传与下载功能。 **一、Hibernate框架** Hibernate是一个强大的Java持久化框架,它简化了数据库操作,提供了对象关系映射...
在Java的数据库编程中,...总结来说,无论是使用JDBC还是Hibernate,处理Oracle数据库的BLOB字段都需要了解其特殊性,尤其是BLOB字段的创建和更新过程。正确地操作BLOB字段,能够有效地存储和管理大容量的二进制数据。