ドメイン駆動設計の自動インクリメントエンティティキー

gsonego

ドメイン駆動設計から始めて、モデルを有効な状態に保つ必要があることを学びました。クラスの新しいインスタンスを作成するときは、必要なすべての属性をコンストラクターパラメーターとして配置することをお勧めします。

ただし、自動インクリメントされたキーを使用する場合、永続レイヤーからAddメソッドを呼び出すと、この新しいIDが表示されます。キーなしでオブジェクトをインスタンス化すると、何らかの一意の識別子が必要になるため、オブジェクトは無効な状態になると思います。

エンティティの新しいインスタンスを作成する前にIDを取得するには、アーキテクチャをどのように実装する必要がありますか?

theDmi

生成されたランダムID

ここでの実用的なアプローチは、ランダムID使用し、エンティティをインスタンス化する前にそれらを生成することです。GUIDは一般的な選択です。

そして、あなたが尋ねる前に:いいえ、あなたはGUIDを使い果たすことはありません:-)

ID予約付きのシーケンシャルID

何らかの理由でシーケンシャルIDを使用する必要がある場合でも、次のオプションがあります。

  • DBのシーケンスをクエリして、次のIDを取得します。これはDB製品によって異なります。たとえば、Oracleにはそれらがあります)。
  • キー予約テーブルとしてのみ使用する自動インクリメントキーを使用してテーブルを作成します。IDを取得するには、そのテーブルに行を挿入します。生成されたキーは予約されているため、エンティティのIDとして使用できます。

シーケンシャルIDの両方のアプローチでは、エンティティの作成を開始する前にDBラウンドトリップが必要であることに注意してください。これが、ランダムIDが通常より単純である理由です。したがって、可能であれば、ランダムIDを使用してください。

DBで生成されたID

もう1つの可能性は、作成時にIDがないという事実に耐えることですが、DBでの挿入操作が成功した場合に限ります。私の経験では、これによりエンティティの作成が使いにくくなるため、回避します。しかし、非常に単純なケースでは、それは有効なアプローチかもしれません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ドメイン駆動設計のエンティティ

分類Dev

ドメイン駆動設計。エンティティタイプの設計

分類Dev

ドメイン駆動設計コントローラーとエンティティ

分類Dev

エンティティフレームワークとリポジトリパターンを使用したドメイン駆動設計

分類Dev

ドメイン駆動設計-ドメインモデルとHibernateエンティティ

分類Dev

ドメイン駆動設計で多形エンティティを使用してドメインモデリングにアプローチする方法は?

分類Dev

ドメイン駆動設計におけるJPAエンティティの責任

分類Dev

selectクエリステートメントの自動インクリメントフィールド

分類Dev

テーブルの自動インクリメントフィールド

分類Dev

DDDを使用するときにセキュリティを配置する場所-ドメイン駆動設計

分類Dev

JavaのデータストアのエンティティIDを自動インクリメント

分類Dev

ドメイン駆動設計におけるエンティティからのビジネスルールの分離

分類Dev

ドメイン駆動設計アーキテクチャのデータをドメインオブジェクトに入力する

分類Dev

非キーバリューエンティティフレームワークコア2.0の自動インクリメント

分類Dev

AggregateRootをDDD(ドメイン駆動設計)のエンティティの子にすることはできますか?

分類Dev

DB2自動インクリメントの主キー列がSpringBootのJPAエンティティで機能しない

分類Dev

ドメイン駆動設計-複数の制限されたコンテキストにわたるアトミックトランザクション

分類Dev

ドメイン駆動設計の ID およびアクセス境界コンテキスト内に複数のユーザーを実装する

分類Dev

Hibernate自動インクリメントプロパティ

分類Dev

ドメイン駆動設計では、エンティティがそれ自体を複製するとき、それをコンテナに追加しますか?

分類Dev

ドメイン駆動設計の仕様パターン

分類Dev

ドメイン駆動設計キャッシュの場所

分類Dev

テーブルの作成後にmysqlのフィールドを自動インクリメントします

分類Dev

ドメイン駆動設計のレイヤー

分類Dev

マングースの自動インクリメントフィールド

分類Dev

自動インクリメントIDを使用してJPAのエンティティに別の変数を設定する方法

分類Dev

自動インクリメントキーを使用してテーブル内の特定のエンティティを見つける方法は?(エンティティフレームワーク)

分類Dev

Node.jsアプリケーションのドメイン駆動設計

分類Dev

ドメイン駆動設計でのアクセス制御

Related 関連記事

  1. 1

    ドメイン駆動設計のエンティティ

  2. 2

    ドメイン駆動設計。エンティティタイプの設計

  3. 3

    ドメイン駆動設計コントローラーとエンティティ

  4. 4

    エンティティフレームワークとリポジトリパターンを使用したドメイン駆動設計

  5. 5

    ドメイン駆動設計-ドメインモデルとHibernateエンティティ

  6. 6

    ドメイン駆動設計で多形エンティティを使用してドメインモデリングにアプローチする方法は?

  7. 7

    ドメイン駆動設計におけるJPAエンティティの責任

  8. 8

    selectクエリステートメントの自動インクリメントフィールド

  9. 9

    テーブルの自動インクリメントフィールド

  10. 10

    DDDを使用するときにセキュリティを配置する場所-ドメイン駆動設計

  11. 11

    JavaのデータストアのエンティティIDを自動インクリメント

  12. 12

    ドメイン駆動設計におけるエンティティからのビジネスルールの分離

  13. 13

    ドメイン駆動設計アーキテクチャのデータをドメインオブジェクトに入力する

  14. 14

    非キーバリューエンティティフレームワークコア2.0の自動インクリメント

  15. 15

    AggregateRootをDDD(ドメイン駆動設計)のエンティティの子にすることはできますか?

  16. 16

    DB2自動インクリメントの主キー列がSpringBootのJPAエンティティで機能しない

  17. 17

    ドメイン駆動設計-複数の制限されたコンテキストにわたるアトミックトランザクション

  18. 18

    ドメイン駆動設計の ID およびアクセス境界コンテキスト内に複数のユーザーを実装する

  19. 19

    Hibernate自動インクリメントプロパティ

  20. 20

    ドメイン駆動設計では、エンティティがそれ自体を複製するとき、それをコンテナに追加しますか?

  21. 21

    ドメイン駆動設計の仕様パターン

  22. 22

    ドメイン駆動設計キャッシュの場所

  23. 23

    テーブルの作成後にmysqlのフィールドを自動インクリメントします

  24. 24

    ドメイン駆動設計のレイヤー

  25. 25

    マングースの自動インクリメントフィールド

  26. 26

    自動インクリメントIDを使用してJPAのエンティティに別の変数を設定する方法

  27. 27

    自動インクリメントキーを使用してテーブル内の特定のエンティティを見つける方法は?(エンティティフレームワーク)

  28. 28

    Node.jsアプリケーションのドメイン駆動設計

  29. 29

    ドメイン駆動設計でのアクセス制御

ホットタグ

アーカイブ