4
ドメインクラスとSQLクエリ間のロジックの重複を回避する方法は何ですか?
以下の例は完全に人為的であり、その唯一の目的は私のポイントを理解することです。 SQLテーブルがあるとします: CREATE TABLE rectangles ( width int, height int ); ドメインクラス: public class Rectangle { private int width; private int height; /* My business logic */ public int area() { return width * height; } } ここで、データベース内のすべての長方形の合計面積をユーザーに表示する必要があると仮定します。テーブルのすべての行をフェッチし、それらをオブジェクトに変換して、それらを反復処理することで、それを実現できます。しかし、これはばかげているように見えます。なぜなら、テーブルにはたくさんの長方形があるからです。 だから私はこれをします: SELECT sum(r.width * r.height) FROM rectangles r これは簡単で高速で、データベースの長所を利用します。ただし、ドメインクラスでも同じ計算を行うため、重複したロジックが導入されます。 もちろん、この例では、ロジックの複製は致命的ではありません。ただし、他のドメインクラスでも同じ問題に直面します。これはより複雑です。