私は常に、サービス層を介して永続層を違反から「保護」する傾向があります。しかし、それが本当に必要なのか疑問に思い始めています。データベースを堅牢にし、関係を構築し、データの整合性を構築するのに時間をかける意味はありません。
たとえば、フィールドUser
に一意の制約があるテーブルを考えてみましょう。当然のことながら、何かを追加しようとする前Email
に、追加する電子メールがデータベースにまだ存在しないことを確認するために、サービス層にブロッカー コードを書きたいと思います。過去に、私は実際に何か悪いことを見たことはありませんが、より多くのベストプラクティス/設計原則にさらされているため、このアプローチはあまりDRYではないと感じています.
では、永続化レイヤーに送信されるデータが実際に「有効」であることを常に確認するのは正しいのでしょうか?それとも、無効なデータをデータベースに送信してエラーを処理する方が自然なのでしょうか?