0

データベースの永続性のためにHibernateを使用しているWebアプリケーションがあります。これは、1つのPOJO、そのHibernate-MySQL-Server上のテーブルへのマッピングおよびその他の関連するものを使用した単純なプロジェクトです。

POJOからさまざまな属性を抽出し、それらを特定の形式でユーザーに提供する必要があります。だから私の質問は、これを最も簡単で最も安全な方法にする方法ですか?同じPOJOに対して、相対属性のみを使用して2番目のマッピングファイルを作成することは可能ですか。したがって、ユーザーが対応するメソッドを呼び出すと、2番目のマッピングファイルのみが機能し、選択した属性のみが表示され、すべての属性が表示されるわけではありません。 、最初の標準マッピングファイルを介してマッピングされますか?論理的に思えますが、セッションに問題があるのではないかと思います。

または、2番目のPOJO + 2番目のマッピングを作成する必要がありますか?しかし、既存の1つのテーブルだけに矛盾がないことをどのように保証できますか?

4

1 に答える 1

2

アプリケーションの異なるインストールでのみ、同じpojoに対して異なるマッピングファイルを持つことができます。1つのアプリケーション、つまり1つのhibernate.cfg.xmlファイルでは、1つのpojoを複数回マップすることはできません。

これの技術的な理由は、Hibernateがクラスを使用してキャッシュ内のインスタンスを検索することです。同じpojoが2回マッピングされると、間違ったマッピングのインスタンスも検出されます。これにより、テーブルにエントリが1つしかない場合や、Query.list()がdoubleエントリを検出した場合でも、Query.uniqueResult()の例外などの奇妙な結果が発生する可能性があります。

できることは次のとおりです。pojoに対して1つの基本クラス(抽象クラ​​スの場合があります)を定義します。これは、すべての共通属性を持ち、マップされることはありません。次に、この基本クラスから拡張する各ユーザーpojo(空の拡張でもかまいません。つまり、機能を追加する必要はなく、本文は空にすることができます)、これらの異なるユーザーpojoクラスに対して異なるマッピングファイルを作成します。

于 2013-01-18T15:13:38.770 に答える