如何使用 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 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 LocalDate 作为 Date 类型持久保存到 Hibernate