fileentry コンポーネントを使用して、イメージをデータベース (JPA 接続を使用した postgres) および JSF に保存したいと考えています。私はそれを検索していたので、入力ストリームを使用する必要があると思いますが、それを使用して画像を bytea タイプに変換し、たとえばカバーの本(bytea) という列のデータベースに保存する方法がわかりません. Bean に含まれるコード。私を助けてください。私はこのようなものを持っています:
1 に答える
あなたは一度にすべてをやろうとしています。ステップバイステップで、自分で理解できる部分に分解してください。
まず、画像の受信とローカル ファイルへの保存が機能することを確認します。この部分には多くの既存の例があります。
次に、JPA 実装にマップbytea
し、ディスクからファイルを保存/取得する方法を理解します。使用している JPA プロバイダーについて言及していないため、これについて特定するのは困難です。
最後に、ストリームから直接書き込むことで 2 つを接続しますが、両方の部分が単独で正しく動作することを確認してからにします。この時点で、フィールドを使用する場合、ストリームを直接データベースに実際に送信できないことがわかりますbytea
。ファイル全体をバイト バッファとしてメモリにフェッチする必要があります。
データベース内のファイルでストリーム I/O を実行できるようにしたい場合は、PostgreSQL の「ラージ オブジェクト」のサポートを使用して実行できます。ただし、JPA を介してこれを操作できる可能性はほとんどありません。ラージ オブジェクト サポート用の PgJDBC 拡張機能を使用して、DB 内のファイルを JDBC で直接管理する必要があります。この API にアクセスするにConnection
は、接続プーラーからオブジェクトをアンラップして、Connection
キャストできる基盤を取得する必要があります。PgConnection
個々の部分で行き詰まっている場合は、その部分に関する適切で詳細で具体的な質問を自由に投稿してください。この質問にリンクすると、人々がコンテキストを理解するのに役立ちます。現状では、これは非常に広範な「テクノロジー X と Y から Z への使用方法を教えてください」であり、答えるには完全なチュートリアルを作成 (または検索) する必要があります。