web-dev-qa-db-ja.com

CRUDメソッドの戻り値?

私はJavaで基本的なWeb APIを書いています。これは他のほとんどすべてが行うことを実行します:入力を受け取り、それを検証してから、DBでCRUD操作を実行します。以前にいくつかのAPIを書いたことがあり、私は、クライアントへの適切な応答を構成するものはすでにほとんどわかっています。

ただし、ほとんどのAPIと同様に、フロントドアクライアントAPIオブジェクトとデータベースに対して実際にクエリを実行するコードとの間で呼び出されるオブジェクトのレイヤーがいくつかあります。私は常に、それらのデータベース対話オブジェクトがそれらを呼び出す関数に戻す必要があるものを知るのに苦労してきました。

エラーが発生すると例外をスローし、コールスタックのさらに上位でキャッチすると思います。ただし、成功した場合は何を返しますか?これが私が以前に使用したものです:

  1. 作成-作成が成功したかどうかを示すブール値を返します
  2. 読み取り-要求されたオブジェクトを返します
  3. 更新-更新が成功したかどうかを示すブール値を返します
  4. 削除-削除が成功したかどうかを示すブール値を返します

これらの状況で他に何を返すかは考えられないので、ReadとDeleteの戻りには満足しています。ただし、作成関数と更新関数からの戻り値のベストプラクティスは何なのかわかりません。更新された値で新しいオブジェクトを返す必要がありますか?渡されたオブジェクトを変更する必要がありますか?成功または失敗を示すブール値を返すだけですか?

5
dsw88

作成時には、通常、作成したエンティティのIDを返します。更新時には、更新したばかりのオブジェクトを返します。削除通常は何も返しません。

作成の場合、最も興味深い部分は作成されたもののIDです。作成できなかった場合はエラーをスローするため、使用するブール値はそれほど興味深いものではありません。 IDでオブジェクト全体を返すこともできます。

更新時に、(更新者または他の誰かによって)変更されたフィールドを持つオブジェクトを返すことが最も理にかなっています。

削除が機能するか、例外をスローします。戻り値は必要ありません。

5
Jim Barrows