2009-09-01 2 views
2

HiLo ID生成を使用するようにアプリケーションを設定すると、データベースに挿入された行あたり1回のラウンドトリップが発生します。私が読んだすべての文書は、はるかに少ない往復を見なければならないことを示しています。NHibernate HiLo IDジェネレータが挿入されたデータベースごとの往復を実行しています

私のオブジェクトは全て、一般に等(流暢に)構成されている:

ID(T => t.Id).GeneratedBy.HiLo( "MyObject_Identity"、 "MAXID"、 "1000")。

さらに、バッチサイズは接続で75に設定されています。

私はおそらく比較的愚かな何かをしていることを知っています。

答えて

0

あなたは、各インサートが往復するのを見て、IDの新しい高い価値を得ることを意味していますか?もしそうなら、各操作でSessionFactoryの新しいインスタンスを使用していますか? SessionFactoryは、高い価値の取得を管理する責任があります。通常は、アプリケーションインスタンスごとに1つのSessionFactoryしか持たないようにしてください(シングルトンまたはIoCコンテナ経由)。

+0

はい。 1つのセッションファクトリ(実際には1つのセッション)内で、インスタンス保存ごとに1回のラウンドトリップが見られました。私はそれ以来、アイデンティティの使用にアプリケーションを戻しました。私が知っているのは、nhibernateの反パターンですが、うまくいきます。私はその後、オブジェクトレベルでバッチサイズのプロパティがあることに気付きました。私は間違って構成された何かを持っていると思う – JeffreyABecker

+0

私は同じ問題を抱えていますが、これを解決するのは面白いです。 – Restuta

+0

あなたが答えを受け入れた理由は、私たちの問題に答えることができないようです。私は同じものを再び開くべきですか? – Restuta

関連する問題