我的问题如下:所以我有一个数据库,其中存储了一些客户。对于每个客户,我添加了这样的图片:
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 [] image ??
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);
}
我的计划是使用servlet和EJB注入在JSP中显示图像。
如果有人可以帮助我,我将非常感激!!!
(这是为了学习目的)
答案 0 :(得分:0)
首先,将图像存储在数据库中并不是很好的做法。虽然它足以用于学习目的,但在实际应用中考虑将图像存储在您选择的文件系统或云服务中,并仅存储路径或链接到图像。
但回到你的问题。
在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