2017-10-07 6 views
-1

Java Webアプリケーションで作業しているときに、私のモデルレイヤーを書かなければならないかどうか疑問に思っていました。たとえば、SQLデータベースに15列のテーブルUSERがあるとします。今度は、SQLですべての列を選択すると、それをJavaクラスにマップし、JSONを使用してシリアル化し、ネットワーク経由でいくつかのビューに送信し、画面に表示します。JavaモデルのベストプラクティスSQL - JSON --VIEW

2番目のシナリオでは、画面上で2つの列のみを選択したいので、SELECT c1、c2 FROM USERを実行します。私の質問がどこに来るのか...それらの列を同じJavaモデルクラスにマップする必要がありますか?または、私はそれに合うように新しいマッパーとクラスを作成する必要がありますか?両方のアプローチには欠点があるように見えますが、クエリごとに別々のクラスが必要ですが、nullをチェックしたり、オプションを使用したりするのではなく、必要はありません。

あなたの意見は?どうもありがとう!

+1

より多くのコードがあり、より多くの作業が必要になりますが、SQLデータの異なるマッピングに1つのクラスを使用することは、アーキテクチャ上の不便です。クラスメンバーを初期化しないか、明示的に 'null'に設定する必要があります。 SOLIDアーキテクチャの原則(https://en.wikipedia.org/wiki/SOLID_(object-oriented_design))の単一責任原則を確認してください。 – deHaar

答えて

1

技術的には、フル15属性および部分2属性エンティティに対して同じUserクラスを再利用することができます。しかし、それは価格で来るでしょう。コード内にUserクラスのインスタンスが表示されるたびに、完全なエンティティか部分的なものかを考える必要があります。どのフィールドがヌルかどうかこれにより、コードについて推論するのがずっと難しくなります。

+0

答えをありがとう!命名はどうですか?どういう名前ですか?たとえば、列が2つしかないユーザ。ユーザー名と表示名? UserWithUsernameAndDisplayNameのようなユーザーではなくなりましたが、それは長すぎるでしょう... – localhost

+0

ああ、命名は難しいです。 'UserDetails'、' UserNameDetails'、 'UserNameInfo'です。 – lexicore

関連する問題