0

ドロップダウンリストからオブジェクト(たとえば、コンピューター名)を選択して構成できるJavaアプリがあります。ドロップダウン リストのコンピュータごとに、構成する必要があるさまざまな構成フィールドがあります。DB に構成フィールドをコンピューターにマップするテーブルがあります。各行には、コンピューター名、構成フィールド名、およびフィールドのタイプが含まれています。

例えば:

computer_name | field_name    | type
=======================================
 test1        | ip            | String
---------------------------------------
 test1        | user name     | String
---------------------------------------
 test2        | manage_port   | Number
---------------------------------------
 test3        | creation_date | Date

test1UI のドロップ ボックスから選択すると、ユーザーには 2 つのテキスト ボックスが表示されます。1 つは IP 用で、もう 1 つはユーザー名用です。各テキスト ボックスをユーザーに表示し、正規表現をチェックするバリデータを用意する必要があります。選択するときtest2、これが実際に数値であり、最小値と最大値であることを検証したいと思います。日付形式を確認する必要があるためtest3です(これも正規表現を使用しています)。

DB は postgres (ソリューションはすべてのリレーショナル DB に適用されるはずですが) で、Spring + Hibernate を使用しています。

私のアイデアは、バリデーター POJO と、異なる列で可能なすべての検証を含むバリデーター用の DB テーブルを作成することでした。問題は、null 列を持つのは少し冗長だと思うことです。Javaでは、クラス、 クラス、クラスなどValidatorによって拡張された抽象クラスを作成すると思います...しかし、DBでそれを正しく表現する方法がわかりません(各構成にマップする必要があることを覚えておく必要があります)構成表の行)。RegexValidatorNumberFormatValidatorMinNumberValidator

より良いデザインのための提案はありますか?

4

2 に答える 2

2

Hibernate は3 種類のマッピングをサポートしています。 クラス階層ごとのテーブル、サブクラスごとのテーブル、具象クラスごとのテーブル

あなたのケースは「クラス階層ごとのテーブル」になるのに十分小さいようです。

于 2013-04-28T14:25:12.947 に答える
1

@Embedded多くのフィールドがない場合は、エンティティで行います。オブジェクト指向の考え方を維持するために、必要なフィールドをテーブルにマップし、JPA の @Embedded オプションを使用するだけです。

于 2013-06-26T22:02:46.910 に答える