【问题标题】:How to retrieve images from database in an enterprise java bean? (using JPAs and JSP)如何从企业 Java bean 中的数据库中检索图像? (使用 JPA 和 JSP)
【发布时间】:2017-01-10 02:35:05
【问题描述】:

我的问题如下:所以我有一个数据库,其中存储了一些客户。我为每位客户添加了这样的图片:

INSERT INTO ITSO.CUSTOMER (TITLE,FIRST_NAME,LAST_NAME,SSN,IMAGE) VALUES ('Mr','Henry','Cui','111-11-1111', LOAD_FILE('D:/Workspace8/Images/11.jpg'));

如何在 Enterprise java bean 中检索这些图片? (我不得不提到我正在使用 JPA)。查询是解决方案吗?

@NamedQuery(name="getImageForCustomer", query="select image from Customer c where c.ssn=?1")

我需要以不同的方式存储我的图片吗? 在 EJB 中,我有这个方法 getCustomer()。我可以添加另一个参数,比如 Byte[] 图像吗??

public Customer getCustomer(String ssn) throws ITSOBankException {
    System.out.println("getCustomer: " + ssn);
    try {           
    return entityMgr.find(Customer.class, ssn);
    } catch (Exception e) {
        System.out.println("Exception: " + e.getMessage());
        throw new ITSOBankException(ssn);
    }

我的计划是之后在 JSP 中显示图像,使用 servlet 和 EJB 注入。

如果有人可以帮助我,我将不胜感激!!!

(仅供学习)

【问题讨论】:

    标签: database jsp ejb


    【解决方案1】:

    首先,将图像存储在数据库中并不是很好的做法。虽然这足以用于学习目的,但在实际应用中,请考虑将图像存储在您选择的文件系统或云服务中,并仅存储图像的路径或链接。

    但回到你的问题。 在您的Customer JPA 类中,您可以为带有javax.persistence.Lob 注释的图像定义字段:

    @Lob private byte[] image;

    ...您的图像数据将被 JPA 加载到 image 字节数组字段中。

    要在 JSP 页面上显示图像,您必须实现 servlet,它将根据客户 ID 提供图像数据(例如 /image?customerId=10)。下面是如何实现这样一个 servlet 的一个很好的例子:How to convert byte array to image

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      相关资源
      最近更新 更多