gpt4 book ai didi

java - 通过 Hibernate(不是 JDBC)从 blob 中检索图像

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:43 26 4
gpt4 key购买 nike

感谢 How to retrieve and display images from a database in a JSP page?,我找到了从 db/blob 检索图像的非常好的解决方案

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

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

我试图通过我的“imageService”做类似的事情,它通过 ImageServlet 类中的注释 Autowiring ,但我得到了 nullPointerException,这意味着可能 imageService 不是由依赖注入(inject)设置的。

有什么办法可以解决吗?我不喜欢根据图像请求建立单个 jdbc 连接。

最佳答案

我希望您将图像作为 BLOB 类型存储在表中(如果不是,请尝试这样做,因为这是最佳实践)。假设您有一个 Person 类,其中包含存储在数据库中的人员的 image。如果你想映射这个,只需在你的 person POJO 中添加一个属性来保存图像。

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

显示时,将其转换为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

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

关于java - 通过 Hibernate(不是 JDBC)从 blob 中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com