2009-08-27 5 views
1

は、私はそれは、ドメインには、次のクラスが含まれているのプロジェクトを持っている:Hibernateマッピングクラス

Courier 
Customer 
Food 
Order 
Customer 
PrimitiveElement 
ResturantCustomerFacade 
ResturantOrderFacade 

そして、私のデータベースには、これらのテーブルがあります。

Courier 
Customer 
CustomizedFood 
CustomizedPrimitivePrice 
FoodType 
Order 
PrimitiveType 
ValueType 

と休止状態が同じであり、上記の表になり、クラスをそれらの名前。 は私があるため休止クラス構造のクラスの私の構造を適用することはできませんが、Hibernateが自分のドメインになりますクラスを使用する必要があります。 または、私自身のドメインクラスを使用しなければならず、休止クラスはデータベース操作のためのものですか?

答えて

1

Hibernateはは、それ自体で任意のクラスを作成しません。私はあなたのデータベーススキーマをリバースエンジニアリングし、適切なクラス/マッピングを生成するために使用できるHibernate Toolsについて話していると思います。

私はと強くあなたがそれを助けることができれば2組のクラスを持っていることに対してアドバイスします。通常は何も問題はありません。代わりに、Hibernate Toolsによって生成されたマッピング/クラスを参照ポイントとして使用して、独自のマッピングを作成する必要があります。ほとんどの場合、あなたの最小限のあるテーブルまたは変更なし(にあなたのドメインクラスをマッピングすることができるようになります例えば、異なるクラス/テーブルまたはプロパティ/カラム名のようなものが簡単に適切なマッピングを経て解決され、組合/継承など、非常に柔軟です..)ここにHibernate Annotationsのドキュメントへのリンクがあります。

別のトピックでは、ResturantCustomerFacadeResturantOrderFacadeのような名前は、ドメインオブジェクトにとってむしろ奇妙です。それらは確かにあなたのモデルの一部である場合は、とRestaurantOrderにそれらの名前を変更することを検討してください。または、実際にファサードである場合、それらはドメインモデルの一部ではなく、マッピングできない(できません)。

+0

私はリバースエンジニアリング使用して自分自身をマッピングすることはありません意味ですか? アノテーションまたはXMLマッピングが簡単なのはどちらですか?私が言ったように – JGC

+0

、あなたは出発点としてリバースエンジニアリングを使用することができますが、既存のドメインモデルを修正するために生成されたマッピングを調整する必要があります。アノテーションとXMLマッピングは、おおむね複雑です。 Java 1.5以降を使用している場合は、注釈を付けることをお勧めします。 – ChssPly76

0

最終的には、リレーショナルデータベースへのオブジェクトのオブジェクトをmapにすることをお勧めします。互換性のない型やレガシーコードで実際に問題が発生した場合は、インターフェイスの背後にあるそれら(およびあなたのハイバネート互換の実装)を隠すことを検討するかもしれません。