`
ttitfly
  • 浏览: 623831 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate大字段处理

    博客分类:
  • java
阅读更多
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根据字段生成数据库表

    ### Hibernate根据字段生成数据库表 #### 一、概述 在软件开发过程中,特别是在进行多数据库支持的应用程序开发时,我们经常需要将同一套代码部署到不同的数据库系统上。这种情况下,手动为每个数据库创建相同的表...

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

    Hibernate_query查询数据表中的一个字段.

    本篇将详细讲解如何使用Hibernate进行查询,特别是针对数据表中的一个特定字段。 一、Hibernate简介 Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化...

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    用Hibernate实现领域对象的自定义字段

    这时,我们需要创建自定义的Hibernate类型来处理这些特殊的字段。 创建自定义类型通常包括以下步骤: 1. **定义Java类**:为自定义字段创建一个Java类,这个类将封装特定的数据结构。例如,如果我们有一个日期范围...

    hibernate使用中与各种数据库字段类型对应类型训练

    本训练主要关注在使用Hibernate时如何处理与各种数据库字段类型的映射,这对于理解和优化数据库交互至关重要。 首先,我们要理解Hibernate的核心概念——对象关系映射(ORM)。ORM允许我们将数据库表结构映射到Java...

    Hibernate存储Clob字段的方式总结

    4. 在Hibernate的配置文件中添加"hibernate.connection.SetBigStringTryClob"属性,这对于Oracle数据库是必须的,以确保可以将大字符串存储为Clob类型。 5. 进行存取测试以验证配置的有效性。 传统存储方式则是将...

    spring1.2+hibernate2对大字段的处理实例

    在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。

    spring1.2+hibernate3对大字段的处理实例,供大家学习与交流,可直接运行

    总结来说,"spring1.2+hibernate3对大字段的处理实例"是一个宝贵的教育资源,它涵盖了Spring和Hibernate在处理大字段时的关键技术,以及如何在Eclipse环境中实现这些技术。通过对这个实例的学习和研究,开发者能够...

    Hibernate操作数据库大字段的示例(附源码及详细开发使用方法)。

    在Hibernate配置文件(hibernate.cfg.xml)中,确保已经正确设置了数据库连接参数,并且JDBC驱动支持大字段的处理。对于支持大字段的数据库,如MySQL,Oracle等,通常不需要额外配置。 **二、实体类** 在实体类中...

    Hibernate读取blob字段

    综上所述,使用Hibernate读取Blob字段涉及到配置映射文件、定义实体类中的Blob属性、执行查询以及流式处理Blob数据。理解这些概念和实践方法,可以帮助我们有效地管理和操作大数据类型的持久化对象。在实际项目中,...

    注意hibernate查单一字段和查两个以上的字段返回的结果

    标题中的“注意hibernate查单一字段和查两个以上的字段...开发者需要考虑查询的效率,特别是在处理大数据量时,避免无谓的数据库交互。同时,合理利用ORM框架提供的特性,如缓存和预加载,可以显著改善应用程序的性能。

    mysql 让hibernate支持text字段的方言

    在处理特定类型的数据库字段时,比如`TEXT`字段,Hibernate可能需要使用特定的方言(Dialect)来确保正确地进行操作。本文将深入探讨如何使Hibernate支持MySQL中的`TEXT`字段,以及`MYSQLDialect.java`在这个过程中...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    使用Oracle JDBC驱动程序的一个优点是,它支持流式处理,这意味着你可以避免一次性加载整个Blob或Clob到内存中,这对于处理大文件非常有用。例如,你可以通过`setBinaryStream`和`getBinaryStream`方法读写Blob数据...

    hibernate中处理大字段 网上收集的文档

    在Java的持久化框架Hibernate中,处理大数据字段,如文本、图像或者其他大量数据,通常涉及到CLOB(Character Large Object)和BLOB(Binary Large Object)类型。这些类型用于存储数据库中的大文本或二进制数据。...

    Hibernate操作Oarcle中Clob、Blob字段小结

    在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...

    Hibernate_query查询数据表中部分字段.

    在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 ...

    hibernate对Blob类型字段进行数据添加.txt

    - 在处理大体积 Blob 数据时,应注意优化性能,比如采用流式读写的方式减少内存占用。 3. **数据库兼容性**: - 当应用需要支持多种数据库时,需要特别注意处理 Blob 数据时的兼容性问题。 4. **异常处理**: -...

    hibernate struts处理mysql数据库blob字段实例

    本实例主要探讨如何利用Hibernate和Struts框架来处理MySQL数据库中的BLOB字段,实现文件的上传与下载功能。 **一、Hibernate框架** Hibernate是一个强大的Java持久化框架,它简化了数据库操作,提供了对象关系映射...

    jdbc+hibernate存取blob字段

    在Java的数据库编程中,...总结来说,无论是使用JDBC还是Hibernate,处理Oracle数据库的BLOB字段都需要了解其特殊性,尤其是BLOB字段的创建和更新过程。正确地操作BLOB字段,能够有效地存储和管理大容量的二进制数据。

Global site tag (gtag.js) - Google Analytics