ホームページ  >  記事  >  データベース  >  Hibernate と MySQL を使用して Spring MVC アプリケーションで抽象スーパークラスの ID を生成するにはどうすればよいですか?

Hibernate と MySQL を使用して Spring MVC アプリケーションで抽象スーパークラスの ID を生成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 22:17:02818ブラウズ

How to Generate IDs for Abstract Superclasses in a Spring MVC Application Using Hibernate and MySQL?

多態性抽象スーパークラスと MySQL ID 生成

Hibernate と MySQL を採用する Spring MVC アプリケーションでは、抽象スーパークラスと MySQL の ID を管理するという課題があります。それらのサブクラスが発生します。 GenerationType.IDENTITY は抽象スーパークラスと互換性がなく、MySQL はシーケンスをサポートしていません。この問題はどのように解決できますか?

まず、MySQL の制限を理解することが重要です。ID の生成とレコードの挿入を同時に行うことはできません。ただし、Hibernate はエンティティの挿入中にこの機能を期待します。

これに対処するために、「LAST_IDS」テーブルを実装できます。このテーブルは、関連する各エンティティに最後に割り当てられた ID を追跡します。次の手順は、このアプローチを使用して ID を生成および保持するプロセスの概要を示しています:

  1. 読み取りオプティミスティック トランザクションが開始されました
  2. 最大 ID クエリ: SELECT MAX(entity_id) FROM LAST_IDS
  3. 変数ストレージ: 最大 ID を変数 ($OldID) に割り当てます。
  4. 新しい ID 計算: $NewID = $OldID 1 (悲観的な場合はそれ以上)ロック).
  5. オプティミスティック更新: UPDATE LAST_IDS SETentity_id= $NewID WHEREentity_id= $OldID?
  6. トランザクションコミット: オプティミスティックをコミットしますtransaction.
  7. エンティティへの割り当て: コミットが成功した場合、生成された $NewID を setID() を使用して保存されるエンティティに設定します。
  8. Hibernate 挿入: Hibernate は挿入操作を実行します。

このアプローチを利用すると、ID生成と管理は、抽象スーパークラスと MySQL の制限と互換性があります。 Hibernate エンティティでの継承は、通常、PostgreSQL や Oracle などのデータベースで継承関係をサポートする場合にのみ使用する必要があることに注意してください。

以上がHibernate と MySQL を使用して Spring MVC アプリケーションで抽象スーパークラスの ID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。