在hibernate Annotation中,实体BLOB、CLOB类型的注解与普通的实体属性有些不同,具体操作如下:BLOB类型,类型声明为byte[]:
private byte[] content;
注解:
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "CONTENT", columnDefinition = "BLOB",nullable=true)
public byte[] getContent() {
return this.content;
}
public void setContent(byte[] content) {
this.content = content;
}
CLOB类型,类型声明为String即可:
private String remark;
注解:
@Lob
@Basic(fetch = FetchType.EAGER)
@Column(name="REMARK", columnDefinition="CLOB", nullable=true)
public String getRemark() {
return this.remark;
}
public void setRemark(String recvdocRemark) {
this.remark = remark;
}
按照以上的设置实体类的注解就搞定了。
-----------------------------------------------------------------
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。 根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理 大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处 理BLOB的典型例子。
mysql BLOB类型
MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
linux修改etc/my.cnf
[mysqld]
max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet
----------------------------------------
很多网站系统都是把上传的图片文件保存到服务器目录,但有些需求必须要把图片保存到数据库才行,例如两个系统共享一个数据库的情况下,就只能把图片文件上传保存到数据库,通过blob字段保存字节数组数据。
此例是用mysql进行保存的,实例代码如下:
1、UploadImage.hbm.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="gm_upload_image" name="com.technodex.gp.bo.game.UploadImage">
<id name="id" type="long" unsaved-value="null" >
<column name="g_id" not-null="true"/>
<generator class="identity"/>
</id>
<property name="file" type="binary" column="g_file"/>
<property name="fileType" length="20" type="string" column="g_file_type"/>
<property name="fileName" length="50" type="string" column="g_file_name"/>
<property name="fileSize" type="long" column="g_file_size"/>
<property name="uploadTime" type="timestamp" column="g_upload_time"/>
</class>
</hibernate-mapping>
2、UploadImage.java
public class UploadImage implements Serializable {
private Long id;
private byte[] file;
private String fileType;
private String fileName;
private Long fileSize;
private Date uploadTime;
...//省略get/set方法
}
3.Create table
DROP TABLE IF EXISTS `gm_upload_image`;
CREATE TABLE `gm_upload_image` (
`g_id` bigint(20) NOT NULL auto_increment,
`g_file` blob,
`g_file_type` varchar(20) default NULL,
`g_file_name` varchar(50) default NULL,
`g_file_size` bigint(20) default NULL,
`g_upload_time` datetime default NULL,
PRIMARY KEY (`g_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注意byte[]--binary--blob三者的映射,对于blob还有一个clob字段容易混淆,blob一般用于保存二进制图片文件,clob用于保存大的文本文件。
------------------------------
private void upload(File file,Tgoods data) throws Exception{ //基于myFile创建一个文件输入流 FileInputStream in=new FileInputStream(file); int len=0; byte[] b =new byte[(int) file.length()]; in.read(b); in.close(); System.out.println(b.length); data.setImage( b ); }
public class GoodsAction extends BaseAction<Tgoods> { private static final long serialVersionUID = 1L; // @Autowired @Resource(name="goodsService") private GoodsService service1; private String oriGoodsName; private File upload; private String uploadFileName; private String uploadContentType;
相关推荐
在C#编程中,将文件上传到数据库是一项常见的任务,特别是在构建Web应用程序时。这个过程涉及到从客户端(通常是用户浏览器)接收文件,将其转换为适合存储在数据库中的格式,然后将其存储在数据库的一个特定字段中...
本文将详细介绍如何在ASP.NET环境中实现文件上传,并将其存储到不同的数据库类型,如Access和SQL Server。 首先,我们需要一个HTML表单来让用户选择要上传的文件。在ASP.NET中,这通常是一个`<input>`元素,其`type...
在FineReport中实现文件上传到数据库和下载的过程涉及多个技术环节,包括数据库设计、文件的二进制处理、报表模板的制作、以及前端界面的操作等。以下是对这一过程中所涉及知识点的详细说明。 首先,我们要了解在...
2. **插入记录**:在文件上传成功后,需要将文件的相关信息(如文件名、上传时间等)插入到数据库中。 3. **异常处理**:在文件上传过程中,可能会遇到各种异常情况,如文件格式不正确、文件大小超过限制等。这些都...
在Java Web开发中,"jsp+servlet文件上传数据库和下载"是常见的功能需求,涉及到的主要技术包括JSP(JavaServer Pages)、Servlet、文件处理以及数据库操作。以下将详细阐述这些知识点。 1. JSP(JavaServer Pages...
C# VS2019通过 本应用程序 主要是实现 将 图片,word、excel、PDF、image等类型的文件上传至数据库,存储起来,并实现了 从数据库中将存储的文件 读取解析成 原有的文件存放至本地, 主要解决了 多个客户端可以共享...
以上是.NET中实现上传文件到数据库服务的基本步骤和关键知识点。在实际项目中,还需要考虑错误处理、事务控制、并发处理等细节,以确保服务的稳定性和安全性。通过这种方式,你可以构建一个高效且可靠的文件上传系统...
在讨论如何将文件上传、下载并以二进制流的方式保存到数据库中时,首先需要了解几个关键概念:文件上传、文件下载、二进制流以及数据库操作。 文件上传通常指的是将本地或者网络上的文件通过网络上传到服务器。在...
在IT领域,文件上传到数据库是一项常见的操作,特别是在构建Web应用程序时。本示例中,我们探讨的是如何通过TCP的Socket通信将图片上传至MySQL数据库,同时涉及了基本的IO字符流读写以及数据库的查询与插入操作。...
以下是一个关于如何在ASP中将文件上传到Access数据库的详细过程。 首先,我们需要一个HTML表单来让用户选择要上传的文件。表单中应包含一个`<input type="file">`元素,用户可以通过这个元素选择本地文件。例如: ...
在ASP.NET(C#)开发中,将文件保存到数据库并实现上传下载是常见的功能需求。这个场景通常涉及用户交互,比如用户通过网页上传文件,然后服务器将这些文件存储在数据库中,以便后续的下载或其他操作。以下是关于这...
C#将文件保存到数据库中或者从数据库中读取文件 本文主要介绍了使用 C# 将文件保存到数据库中或者从数据库中读取文件的方法。下面将详细介绍该知识点。 一、保存文件到数据库中 在实际开发中,我们经常需要将文件...
- 通过 `TBlobField` 将选定文件的内容加载到数据库的 Blob 字段中。 - 提交更改并关闭记录。 #### 2.3 完整代码示例 ```pascal procedure TForm1.Button1Click(Sender: TObject); var cdsTemplate: ...
在上传文件并保存到数据库的过程中,Spring的依赖注入可以方便地将数据库连接池、DAO接口等资源注入到Action类中。 4. **Hibernate**:Hibernate作为ORM工具,用于简化与数据库的交互。在本例中,我们需要创建一个...
使用python上传图片到数据库
从给定的文件信息来看,这段内容涉及到的是一个关于上传二进制文件到数据库的应用程序的源代码。这里,我们将详细解析与这个主题相关的几个关键知识点:上传二进制文件的概念、二进制数据在数据库中的存储方式、以及...
java__文件上传下载到数据库
### 文件上传到服务器中并保存到数据库中的关键技术点 在本篇内容中,主要讨论了如何使用ASP.NET技术实现文件上传功能,并将其相关信息保存至数据库的过程。这一过程涉及到了前端表单提交、后端文件处理以及数据库...
在C#编程中,将文件上传到数据库以及从数据库下载文件是常见的操作,尤其是在构建Web应用程序时。这个源代码示例可能包含一个完整的Web站点项目(WebSite4),用于演示如何处理这种数据存储。以下是对这些关键知识点...
【标题】"jsp文件上传到数据库里例子下载"是一个典型的Java Web开发教程,它涉及到的主要知识点是如何使用JSP(JavaServer Pages)将用户上传的文件存储到数据库中。这一过程通常用于实现用户在网站上上传图片、文档...