14

私のプロジェクトでは、どこかでのを使用する必要がunitOfIssueありItemsます。さて、もちろん、さまざまなアイテムが異なる表現単位を持つことができます。そこで、この状況をエレガントに処理するために、何らかのAPIまたは何らかの方法を探していました。

これらのユニットを表す何らかの方法を提供する利用可能なAPIはありますか?印象的なJScienceについて聞いたことがありますが、でマッピングする際に別の問題に直面していJPAます。いくつかのグーグル作業の後、私はこのコンテキストで--JScience-JPAとしていくつかの作業が行われていることを知りましたが、本番環境で使用するにはまだ安定していないようです。

JSR-275についても何か見つけましたが、このJCPページからは却下されたようです。

それから私はまだ詳細を掘り下げていない測定単位に出くわしました。しかし、再び同じ問題が発生します。これをJPAでマッピングできますか?

編集:-このSOの質問から、ユニット付きのJava番号に出くわしましたが、本番環境に対応しているかどうかはわかりません。

特に上記のオプションを見た後、私は本当に混乱しています。そして、JPAは、私がそれらのいずれかを使用できるかどうかについての追加の懸念事項です。誰かがそのような状況に直面し、それから抜け出す方法を見つけたことがありますか?ここで本当に助けが必要です。何を使うべきですか?そして、他に方法がない場合、これらの単位を表すための適切な方法は何でしょうか。私が見る1つの方法は、を使用することenumsです。しかし、もちろん、それが最後の選択です。

4

2 に答える 2

4

私は、JSR-275 を広範囲に使用するプロジェクトに参加していました (JCP によって拒否される前)。当初は JPA を使用していませんでしたが、後で JPA 2.0 を使用してモデルを永続化する必要があると判断され、メジャー オブジェクトの永続化に対処する必要がありました。

これはあなたの質問に対する答えではないかもしれませんが、議論に興味深い考えをもたらすかもしれません。

いくつかの代替案を検討しました。

  1. メジャーはシリアル化可能であり、JPA は任意のシリアル化可能なオブジェクトをマップできます。ここでの問題は、測定値がデータベースにバイナリ オブジェクトとして保存され、シリアライゼーションのすべての問題 (バージョン管理など) の影響を受けることです。
  2. すべての単位に国際的な測定単位を使用することに同意した場合、データを生の型 (整数、倍精度など) のままにしておくことで、モデルを適応させることができます。したがって、フィールドは JPA がサポートする型に基づいていますが、ゲッターとセッターはメジャー オブジェクトを使用します。プロパティではなく、フィールドに基づく JPA マッピングを構成します。ここでの問題は、ドメイン オブジェクトのパブリック インターフェイスに影響を与えずに、カプセル化されたデータを変更するためにモデルを変更しなければならないことでした。
  3. 永続化プロバイダーとして hibernate を使用していたので、JPA 標準からの逸脱を受け入れ、hibernate カスタム値型を使用してメジャー オブジェクトを対応するプリミティブ型にマップすることができました。次に、この目的のために hibernate アノテーションを使用して型をマップできます。(ここで例を参照してください)。この場合の注意点は、永続化ベンダーの独立性が失われることです。

最終的に代替#3を使用しましたが、それは私たちにとって非常にうまく機能しました.

于 2013-01-10T08:17:13.783 に答える
1

自分で書くことをお勧めします。おそらくあなたも必要かもしれませんUnit Of Measure Conversion

ARTS Retail Data Modelの論理ビューからのUOMの定義

ここに画像の説明を入力

そして変換のために

ここに画像の説明を入力

于 2013-01-10T07:46:56.027 に答える