質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

Q&A

1回答

178閲覧

【DDD】リポジトリパターンでDB切断している時の例外ハンドリングにつきまして

kakakage

総合スコア0

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

0グッド

0クリップ

投稿2024/09/22 15:37

実現したいこと

最近ドメイン駆動開発(DDD)の勉強を始めた初心者です。
teratail(というより質問サイトへの投稿)も初めてです。

仕事ではラダーや組込/制御系(C++/C#)のプログラムを3年くらい書いています。
リポジトリパターンについて分からないことがあり、質問させて頂きました。

発生している問題・分からないこと

リポジトリパターンでネットの記事を調べていると、例外処理の記述がありません。

例えばリポジトリ経由でDAOからDB接続して失敗した場合、DB接続異常のハンドリングはDAO内で完結させ、アプリケーション側では全く意識しないという認識でよろしいでしょうか?
DB接続異常の画面表示や、通信先装置への異常応答をどうやって行うのだろうと疑問に思った次第です。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Stack Overflow でも似たような質問を見ましたが、少し考えと異なっていたたため、質問させて頂きました。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

人によっていろいろな考え方があるかと思いますが、自分としてはリポジトリの責務はエンティティの取得や保存なので画面の事は考えずエラーがあれば例外を出すで良いと考えています。
実際自分も例外をキャッチせず呼び出し側でtry-catchしてもらう前提で作っています。

cs

1// Unity(C#)のUserRespotiroyのインターフェースの例 2// エラーがあれば例外を出す前提 3public Interface IUserRepository 4{ 5 UniTask<User> Get(int id); 6 UniTask Save(User user); 7} 8 9// 呼び出す側(画面) 10try 11{ 12 var user = await userRepository.Get(userId); 13 // 画面の表示処理 14} 15catch(Exception e) 16{ 17 // エラー表示(ダイアログなど) 18}

投稿2024/09/22 16:10

mingos

総合スコア4190

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問