如何使用 HIbernate 作为 BLOB 将此图像保存到 MySQL 数据库?

Posted

技术标签:

【中文标题】如何使用 HIbernate 作为 BLOB 将此图像保存到 MySQL 数据库?【英文标题】:How to save this image to MySQL database using HIbernate as BLOB? 【发布时间】:2017-10-22 02:46:42 【问题描述】:

如何使用 Hibernate 将此上传的图像保存到 mysql 数据库?我需要将此图像转换为字节数组还是有其他方法可以做到这一点?

try 
    // parses the request's content to extract file data
    List formItems = upload.parseRequest(request);
    Iterator iter = formItems.iterator();

    // iterates over form's fields
    while (iter.hasNext()) 
        FileItem item = (FileItem) iter.next();
        // processes only fields that are not form fields
        if (!item.isFormField()) 
            String fileName = new File(item.getName()).getName();
            String filePath = uploadPath + File.separator + fileName;
            File storeFile = new File(filePath);

            System.out.println("Image file name is :" + fileName);

            // saves the file on disk
            item.write(storeFile);

        
    

【问题讨论】:

【参考方案1】:

Java for MySQL 中 Blob 的等效映射类型是 byte[]。您应该在 Hibernate 中使用相应的方言并注释类似的属性

@Lob
@Column(name = "data", columnDefinition = "blob", length = 16777215)
public byte[] getData() 
  return this.data;

【讨论】:

首先我需要将此图像转换为字节吗?还是有其他方法? 我用过byte[] fileData = FileUtil.getBytes(file); 如果你使用Struts它直接将文件存储到action bean,你不需要像commons-fileupload这样的其他框架走迷宫。【参考方案2】:

这是一个演示示例,请通过它并询问您是否有任何问题

https://github.com/loiane/hibernate-image-example

上面例子的解释:

https://dzone.com/articles/how-load-or-save-image-using

【讨论】:

以上是关于如何使用 HIbernate 作为 BLOB 将此图像保存到 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

hibernate如何保存blob数据

如何将 LocalDate 作为 Date 类型持久保存到 Hibernate

使用 Hibernate 和 Spring 创建 Blob

如何使用 Hibernate 在 Oracle 中保留 LARGE BLOB (>100MB)

将本地 blob 图像 url 上传到 php

Hibernate操作Blob数据