hibernate結合プライマリ・キーの使用を慎む


OIDはhibernateの重要な概念で、OIDがなければhibernateは永続化オブジェクトを管理することはできませんが、データベースのテーブルにプライマリ・キーがない場合もあります.この場合、OIDとして統合プライマリ・キーを使用しなければなりません.すべてのフィールドを結合する場合もあります.一部のフィールドの結合です.
hibernateの結合プライマリ・キーを使用する場合、いくつかの注意点があります.
1、まず、マッピングファイルにおけるキーの組み合わせの書き方、
例:
   

<composite-id name="sid" class="cn.test.po.IpAndSubphoneId">
            <key-property name="ip" type="java.lang.String">
                <column name="IP" length="50" />
            </key-property>
            <key-property name="subphone" type="java.lang.String">
                <column name="SUBPHONE" length="50" />
            </key-property>
        </composite-id>

コンビネーションプライマリキーのラベルはラベルとほぼ同じですが、ラベルに書く必要があります.
2、ユナイテッドプライマリ・キーのフィールドに空の値は存在しない
実際の開発では,連合プライマリ・キーのいずれかのフィールドが空の値であると,その連合プライマリ・キーによってクエリされた結果が空の値になることを発見したが,この問題はhibernateのバグかspringがhibernateを統合する際に生じる問題か分からず,要するに実際に使用する際には連合プライマリ・キーとしてのフィールドが値を持つことを保証したほうがよい.
3、主キーが衝突しやすい
hibernateコンビネーションプライマリ・キーのもう一つの弊害は、プライマリ・キーの重複の危険性です.いくつかのフィールドをコンビネーション・プライマリ・キーとすると、これらのフィールドが更新された後に重複する可能性がありますが、データベースではエラーは報告されません(他の異なるフィールドがあります)、hibernateはプライマリ・キーの重複のエラーを報告します.
4、使いづらい
1つのフィールドを検索する必要がある場合もありますが、Nつのフィールドを含む結合プライマリ・キーを使用して検索すると、苦労してお金を失うことになります.
だから、ここでは連合プライマリ・キーを使わないほうがいいとお勧めします.必要でない面倒を避けるには、やむを得ない場合を除いて、連合プライマリ・キーを使わない方法が見つからない限り.