1

Baluscの最初の方法に従って、 データベースで定義されたフィールドから動的フォームを作成しました。投稿されたフィールドのフィールド名と値を取得できます。しかし、値をデータベースに保存する方法について混乱しています。

  • フォームを作成した後に値を保持するテーブルを事前に作成し、手動で(SQLクエリを手動で作成して)そこに値を保存する必要がありますか?
  • 名前と値のペアをJSONオブジェクトに変換して保存する必要がありますか?
  • id、name、valueフィールドを使用して単純なテーブルを作成し、ここに名前と値のペアを保存する必要がありますか(EAVスキームのように)?

または、投稿された値をデータベースに永続化する方法はありますか?よろしく

4

1 に答える 1

2

トップダウンではなく、ボトムアップで取り組んでいるように見えます。

リンクされた回答の動的フォームは、単一のテーブルごとに「ハードコードされた」Facelets ファイルに個別の JSF CRUD フォームを手動で作成する必要なく、既存のすべてのテーブル間で再利用されることを目的としています。Field特定のDBテーブル(リンクされた回答にあります)で利用可能なすべての列に関する情報を含む汎用モデルがすでに利用可能である必要があります。ResultSetMetaDataこの情報は、JPA メタデータ情報 (使用する JPA プロバイダーによって異なります) を介して動的かつ一般的に抽出するか、アプリケーションの起動時に 1 回、古き良き JDBCクラスを介して抽出できます。

本当にボトムアップで作業する必要がある場合は、よりトリッキーになります。つまり、実行時にテーブル/列を作成することは非常に悪い設計です (もちろん、PhpMyAdmin などのような DB 管理ツールを開発するつもりがない限り)。実行時にテーブル/列を作成する必要がなければ、基本的に 3 つのテーブルが必要です。

  • どの「仮想」DB テーブルがすべて使用可能であるかに関する情報を含む 1 つのテーブル。
  • そのような「仮想」DBテーブルの列の情報を含む1つのテーブル。
  • そのような列が持つ値の情報を含む 1 つのテーブル。

次に、FK 関係によってそれらをリンクする必要があります。

于 2012-11-16T11:41:03.820 に答える