問題タブ [hexagonal-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1508 参照

interface - 六角形のアーキテクチャとトランザクションの概念

私は六角形のアーキテクチャに慣れようとしていますが、さまざまなアプローチですでに実現されている一般的な実際の問題を実装する方法がわかりません。私の中心的な問題は、アダプターとポートに抽出された責任のレベルを理解することだと思います。

Web で記事を読む場合は、次のような原始的な例で問題ありません。

mysql/txt/s3/nosql ストレージに実装できる RepositoryInterface があります。

また

NotificationSendingInterface があり、電子メール/SMS/Web プッシュの実現があります

しかし、これらは非常に洗練された例であり、インターフェース/実現の詳細の分離にすぎません。

ただし、実際には、ドメイン モデルでサービスをコーディングすると、通常、インターフェイス + 実現がより深く保証されることがわかっています。

説明目的の例として、ストレージとトランザクションのペアについて質問することにしました。

ストレージのトランザクションの概念は、16 進アーキテクチャでどのように実装する必要がありますか? ドメインレベル内に単純なcrudサービスインターフェースがあると仮定します

そして、これらのメソッドを使用している間、ある種のトランザクション保証が必要です。たとえば、1 つのトランザクションでの削除 + 保存などです。

ヘックスの概念に従って、どのように設計および実装する必要がありますか?

TransactionalOperationの外部調整インターフェースで実装する必要がありますか? はいの場合、一般に、TransactionalOperationは、 StorageRepoInterfaceのすべての実装と連動するトランザクション保証を実装する方法を認識している必要があります(追加のトランザクション指向操作インターフェイス内の mb) 。

いいえの場合、追加のメソッドを使用して、ドメイン レベル (16 進数内) でStorageRepoInterfaceからの明示的なトランザクション保証があるはずですか?

いずれにせよ、述べたように「分離され、インターフェース化された」外観ではありません。

そのような状況で考え方を正しく変える方法や、どこを読むべきかを教えてもらえますか?

前もって感謝します。

0 投票する
2 に答える
399 参照

domain-driven-design - 六角形のアーキテクチャは、コントローラまたはサービスに集約されます

システムでリードを作成する役割を担う Hexagonal アーキテクチャのサービスがあります。このサービスにはユーザーがいないため、外部サービスを呼び出す必要があります。

API を介して受け取るリード作成リクエストには、user_id (作成者) がなく、ユーザーの電子メールがあります。

私の質問は、この通話をどこで行うべきですか?

a) コントローラで外部サービスを呼び出してユーザーを取得し、それをリードの作成を担当するアプリケーション サービスに渡します。この場合、外部サービスを再度呼び出して、指定された ID が存在するかどうかを確認する必要がありますか?

b) コントローラーで電子メールを渡し、アプリケーション サービスでユーザーの電子メールを使用して外部サービスを呼び出し、ユーザーを取得します。

API で受け取っているものでアプリケーション サービスを損なうことがないので、最初のものを好みます。

どう思いますか?

0 投票する
2 に答える
182 参照

hibernate - Spring Data - 別のパッケージの hibernate.cfg.xml

私はSpringが初めてで、春のデータで六角形のアーキテクチャを作成しようとしています

ドメイン用のパッケージ、永続化用のパッケージ、および DddApplication が存在する構成用の gradle マルチモジュール セットアップがあります。

Not a managed type: class com.example.ddd.domain.model.Customerクラスに javax.persistence.@Entity などのアノテーションを付けない限り、起動時に を取得します。

ただし、クラスに注釈は必要ありません。persistenceパッケージの hibernate.cfg.xml と Customer.hbm.xml にエンティティを設定しました。

スプリング ブートは他のパッケージの hibernate.cfg.xml を使用していないと思います。

persistenceパッケージ内の hibernate.cfg.xml に基づいてエンティティを認識するように Spring Boot を構成する方法はありますか?

application.properties と hibernate.cfg.xml はpersistenceパッケージのリソースにあります。