2016-12-21 5 views
0

私の問題は次のとおりです。そのため、いくつかの顧客がそこに格納されているデータベースがあります。どの顧客に対しても、次のような画像を追加しました。エンタープライズJava Beanのデータベースからイメージを取り出す方法は? (JPAとJSPを使用して)

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')); 

エンタープライズ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); 
    } 

その後、サーブレットとEJBインジェクションを使用してイメージをJSPに表示します。

誰かが私を助けることができるなら、私はとても感謝しています!

(それは目的を学ぶためだ)すべての

答えて

0

まず、データベースに画像を保存することは非常に良い習慣ではありません。実際のアプリケーションでは、学習目的では十分ですが、イメージをファイルシステムまたはクラウドサービスに保存し、パスまたはリンクのみを保存することを検討してください。

しかし、あなたの質問に戻る。あなたのCustomer JPAクラスで 、あなたはjavax.persistence.Lobアノテーションが付けられた画像のためのフィールドを定義することができます。

@Lob private byte[] image;

...とあなたの画像データは、JPAでimageバイト配列フ​​ィールドにロードされます。

イメージをJSPページに表示するには、サーブレットを実装する必要があります。サーブレットは、顧客IDに基づいてイメージデータを提供します(たとえば、/image?customerId = 10)。このようなサーブレットの実装方法の例を以下に示します。How to convert byte array to image

関連する問題