2011-01-21 10 views
1

NHibernateのスキーマの生成についての経験をお伝えください。データモデルの複雑さとサイズに関して、どれだけ拡張性がありますか?手作業で作成したデータモデルと比較して、パフォーマンスに大きな影響がありますか?NHibernateスキーマの生成

+1

具体的には、クラス定義からデータベーススキーマを生成することについて話していますか?クラス定義と一致するように手動でデータベーススキーマを作成するのか?そのような場合は、おそらく80%のソリューションで、最初のリリースに必要なものにかなり近いものです。最初のプロダクションリリース後、スキーマ生成が実際には行っていない移行について考える必要があります。 –

+0

はいMichale、私はクラス定義からdbスキーマを生成することに言及しています。それがバージョン1のニーズにかなり近いことを知ってよかったら、それは多くの時間を節約すると思います。ありがとうございました。 – patelsan

答えて

2

私はあなたの意志でテスト・データベースを再構築し、再投入するためにコードのビットでそれを使用することができたときに、開発のためのそれは非常に有用であることが分かってきました。移行に関するマイケルのポイントは私たちの経験と一致しています。初めてのリリースでは、本番データベースを変更する別の方法を決定する必要があります。

FWIWでは、通常の種類(サブクラスごとの配列を含む)の約30個のモデルでNHスキーマの生成を行っていますが、生成する定義は正しいため、スキーマのサイズには明らかな制限はありませんそれが処理できること。

私は今、ソフトウェアはあなたに完全に一貫して正確に何を指定している何かを与えるため、自動的に生成されたスキーマは、ほとんど常に手作りのものよりも優れた出発点であると考える傾向があります。熟練したDBAが行うことができる最適化の種類は、大規模で具体的な作業負荷が調整されるまで、必要または有用ではありません。

0

あなたはリンゴと梨を比較しています。手作りモデルはいつも(よく)ORM技術を実行します。

私は個人的にNHibernateのはよく機能し、リレーショナルモデルに事実上すべてのOOモデルをマッピングします、それはそれの美しさだと思います。アプリケーションの起動時間を認識し、セッション管理を正しく使用しているかどうかを確認するような、いくつかの問題があります。

私はNHibernateのをお勧めしますし、現在約80個のテーブルかそこらを保持し、まだ大きな問題を見ていないスキーマに18ヶ月のためにそれを使用しています。

+0

80テーブルと18カ月でうまくいきます。私は手作りのDBモデルがより良くなることを知っています。それは、「主要なパフォーマンスの影響がある」と言及した理由です。 – patelsan

0

パフォーマンスの影響はありません。実際には、マッピングファイルに合わせてテーブルを作成する方法がいくつもあります。スキーマの作成時に任意のsqlを実行するだけでなく、データベースのデータ型を指定したり、制約やインデックスを作成したりすることができるなど、スキーマ作成のための機能がいくつか追加されています。

通常、パフォーマンスのチューニングは、自動的にスキーマを作成した後に行うことができます。たとえば、NHにテーブルを作成させ、いくつかのパフォーマンスに関連する設定を行うためにAlter Tableステートメントを実行します。後でインデックスを作成(または置換)することも非常に簡単です。このすべては、マッピングファイルに書き込むことさえできます。これまでの情報に基づいてすべてのテーブルとカラムを作成することは、NHによって行われています。マッピングファイルです。

1

あなたのスキーマをエクスポートして、データベースを作成する必要がある場合は、流暢NHibernateはスキーマツールを見たいのですが。アセンブリ、hibernate.cfg.xml、* .hbm.xmlおよびFluent Mappingsを読み込むことができます。データベースのDDLを生成/実行することができ(作成/更新/削除テーブル)、作成/更新されたデータベースの作成に使用されるCSVのような入力ファイルを受け入れることができます(データセットファイルはHQLで行われる小さなクエリを受け付けます) 。このツールは、NHibernateを使用するユニットテストやWebアプリケーションに非常に便利です。

詳細:https://bitbucket.org/guibv/fnst/wiki/Home

関連する問題