0

データベース スキーマでいくつかの Java の概念を表現したいと考えています。インスタンスを Hibernate に永続化するという意味ではなく、Java の型システムを一連のテーブルと行として表現するという意味です。

たとえば、タイプに関しては、私が表現したい特定の明確な関係のセットがあります。たとえば、 Java にはプリミティブ型と参照型の 2 つの型があり、プリミティブ型は数値型とブール型に分割され、数値型は整数型と浮動小数点型に分割され、整数型は byte short int long と char 型と浮動小数点型に分割されます。 float と double に(私はそれが正しいと思います)。

Java にもクラスがあり、クラスにはメソッドがあり、メソッドにはシグネチャとコンストラクターがあり、型と引数が返されます。どちらにも何らかの型があります。

そこで、この種の情報を 3NF 形式で表すデータベースを作成したいと考えています。このようなデータベースは、データベースに入れられるデータであるオブジェクト インスタンスに関するクエリを許可します。

このようなものはありますか?おそらく、JDBC と Hibernate の領域に到達しないクエリを作成するのは難しいため、Google で役立つものは何も見つかりません。それでも、誰かがすでにこれを行っているに違いないと思います。私が知らない標準や RFC さえあるかもしれません。

私が望んでいないのは、休止状態などのいくつかの側面をリバースエンジニアリングしようとすることです。それは実際には、見返りがほとんどない大規模な作業になると思います。私がゼロからそれを行うことができないということではありません (通常の誤った開始と間違いが行われた後)。

どうもありがとう。

4

4 に答える 4

2

オブジェクト リレーショナル インピーダンスのミスマッチは難しい問題です。Hibernate や別の ORM レイヤーに飛び込んで、彼らがどのようにそれを行ったかを理解しようとしない場合は、自分で車輪を再発明する必要があります。

Object テーブルなどの概念的な表現を考え出すことができます...そして、Hibernate が使用するような継承戦略を使用することができます。しかし、メソッドをキャプチャしたい場合は、それを理解する必要があります (メソッド - オブジェクトの関係?) @Override の機能をキャプチャしたい場合は、それを理解する必要があります。注釈?などなど

「Java の概念をデータベース スキーマで表現したいのですが、実際には大規模な作業であり、成果はほとんどないと思います。」

あなたはあなた自身の質問に答えたと思います。あなたが尋ねたいと思うかもしれない質問は、「私が本当にやろうとしていることに対して、より良いアプローチはありますか?」ということです。

于 2012-05-28T05:20:03.573 に答える
0

それはまだ行われておらず、どこかで仕様化されていないかどうか疑問に思っていることです。

あなたが意味する意味ではありません。このホイールは、以前にさまざまな ORM マッピング製品で発明されていましたが、そのような製品とは無関係に開発した人を私は知りません。(なぜ誰かがそれをやる気になるのでしょうか?その仕事を利用するプロジェクトが何百もあるわけではありません...)

于 2012-05-28T06:22:41.220 に答える
0

「サブタイプ」「スーパータイプ」モデリングの Google。

あなたの問題は、サブタイプの2つまたは3つのレベルが必要なようです。

すべてのタイプ名、長さ、属するクラスなどに共通の属性を保持する「フィールド」と呼ばれるテーブル。

すべてのテキスト型フィールドに共通の属性を保持する「text_fields」と呼ばれるテーブル。

数値フィールドに共通のすべての属性を保持する「numeric_fields」と呼ばれるテーブル。フロートまたは固定、おそらく最大値と最小値などの指標。

したがって、各フィールドについて、名前などを「fi​​elds」テーブルの行として保存し、残りのデータを「text_fields」または「numeric_fields」テーブルに保存します。

これをモデル化する理由によっては、4 番目のテーブル「クラス」が必要になる場合があります。クラス変数は、Java プログラムで基本型が出現するほとんどの場所に出現する可能性があるためです。

于 2012-05-28T06:46:32.630 に答える