当前位置: 首页 > 面试题库 >

通过Hibernate(不是JDBC)从Blob中检索图片

扈沛
2023-03-14
问题内容

由于如何在JSP页面中从数据库检索和显示图像,我找到了一种从 db / blob
检索图像的很好的解决方案?

但这是在每个图像请求上使用 JDBC连接的 解决方案。

我正在使用 Spring 3 注释和 Hibernate 3

我试图通过我的’imageService’做类似的事情,它通过 ImageServlet类中 的注释自动装配,但是我得到了
nullPointerException ,这意味着 imageService 可能不是由依赖注入设置的。

有什么办法解决这个问题吗?我不喜欢在图像请求上建立单个jdbc连接。


问题答案:

我希望您将图像以BLOB类型存储在表中(如果不尝试这样做,因为这是最佳做法)。让我们假设您有一个Person类,其中包含image存储在数据库中的人员的。如果要对此进行映射,只需在个人POJO中添加保存图像的属性。

@Column(name="image")
@Blob
private Blob image;

显示时,将其转换为a byte[]并显示。

private byte[] toByteArray(Blob fromImageBlob) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
      return toByteArrayImpl(fromImageBlob, baos);
    } catch (Exception e) {
    }
    return null;
  }



private byte[] toByteArrayImpl(Blob fromImageBlob, 
      ByteArrayOutputStream baos) throws SQLException, IOException {
    byte buf[] = new byte[4000];
    int dataSize;
    InputStream is = fromImageBlob.getBinaryStream();

    try {
      while((dataSize = is.read(buf)) != -1) {
        baos.write(buf, 0, dataSize);
      }    
    } finally {
      if(is != null) {
        is.close();
      }
    }
    return baos.toByteArray();
  }

您可以查看以下示例以了解更多信息。

  1. http://i-proving.com/2006/08/23/blobs-and-hibernate
  2. http://snehaprashant.blogspot.com/2008/08/how-to-store-and-retrieve-blob-object.html
  3. http://viralpatel.net/blogs/2011/01/tutorial-save-get-blob-object-spring-3-mvc-hibernate.html

如您所见,有多种方法可以做到这一点。选择一个适合您的。



 类似资料:
  • null null 在简单的java应用程序中读取图像, 将图像转换为字节数组 将其存储到远程DB2数据库中(使用的技术不是imp,所以我现在使用的是纯jdbc) 从数据库回读它,并 将其转换回来,以确保图像作品的再创作。(我可以在任何图像查看器中打开重新创建的新图像) 问题 问题发生在步骤5。 null null null 我已经参考了以下链接进行验证1。在DB2中插入图像。这里的链接提供了洞察

  • 我需要调用一个Oracle过程,其中一个IN参数与VARCHAR2和OUT参数作为BOOLEAN数据类型。 下面是我使用SimpleJDBCall的代码 异常: CallableStatementCallback;SQL未分类的SQLExctive[{callPACKAGE_NAME.PROC_NAME(?, ?)}]; SQL状态[99999];错误代码[17004];无效列类型: 16;嵌套异

  • 我正在尝试使用JavaScript从API获取数据,这个API在Postman中工作,但在JavaScript中不工作。 此代码在控制台中显示为未能获取响应数据且未定义:

  • 是否正确?现在,当我尝试从数据库中检索blob数据时,它每次都会更改,为什么?那么如何检索此图像呢?以下是我尝试过的代码: 我没有看到任何图像。为什么?请帮忙。谢谢

  • 问题内容: Java中是否有一种方法,只需指定开始索引和结束索引,即可将对象列表从Arraylist获取到另一个ArrayList? 问题答案: 是的,您可以使用以下方法: 这将返回原始列表那部分的视图,它不会复制数据。 如果要复制:

  • 问题内容: 我有一个代码可以显示员工图表。 数据(名称,电话,照片等)存储在SQLServer中,并通过JSP显示。可以正常显示数据,但图像.jpg(存储在IMAGE = BLOB列中)除外。 顺便说一句,我已经显示了图像(请参见下面的代码),但是我不知道如何将其放在.css定义的区域中(也请参见以下代码),因为图像是通过resultSet被加载到浏览器的整个页面中。 有谁知道我如何“构图”图像?