検索

ホームページ  >  に質問  >  本文

java - Alibaba の開発マニュアルでクエリの受信クラスとしてマップが無効になっているのはなぜですか?

私は、プロジェクト内のクエリの受信オブジェクトとして List<Map<String,Object>> をよく使用します。これは便利であり、複数テーブルのクエリごとに DTO クラスを作成する必要がないことがわかります。

上記はクエリのみです。マップを DTO に適用した場合、VO にも同じ問題が発生しますか?

大家讲道理大家讲道理2742日前1275

全員に返信(8)返信します

  • 高洛峰

    高洛峰2017-05-27 17:43:05

    1. マップパラメータの数が多いとメンテナンスが困難になります。文字列形式でキーを識別するため、文字がプログラムされていないエラーが発生する可能性があります

    2. マップをエンティティに変換します。これはリソースを消費します。あるいは、エンティティを変換せずに直接SQL層にマップを渡すことになりますが、null値の判定(このパラメータを渡すかどうか…)が必要になるため、パラメータの数が多すぎると多くの判定が必要になります。 (SQL効率が低下し、メンテナンスが容易ではありません)

    3. エンティティクラスを作成するよりも、マップを作成してからパラメーター値を入力する方が時間がかかります (マップの数が少ない場合、作成時間の差は非常に小さいですが、マップの数が少ない場合、その差は非常に大きくなります)数が多いです)

    4. パラメータの種類の制御。 SQL の文字列型ではないパラメータは数値に変換する必要があります。 。 。エラーは SQL に発生し、簡単に CC されます

    5. オブジェクトに面し、SQL レイヤーをエンティティから分離し、結合を軽減します。そうしないとメンテナンスが面倒になります

    返事
    0
  • ringa_lee

    ringa_lee2017-05-27 17:43:05

    2 つの側面があると思います:
    1. オブジェクト指向の考え方
    2. 結局のところ、クエリを使用するときは間違いを犯しやすいです [効率とは、map.get(key) と、map.put を指します]。まあ、それは本当に良くありません

    すべて私が作りました、はは、大学の先生が私にそれについて言ったと思います。 。

    返事
    0
  • 某草草

    某草草2017-05-27 17:43:05

    他人による共同開発やその後のメンテナンスには適さない

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-27 17:43:05

    Map は型が安全ではありません

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-27 17:43:05

    Map はクエリ パラメーターを使用します。メソッドの呼び出し元は、メソッド プロバイダーによって提供されるメソッド パラメーターにどのキーと値のペアおよびキーと値のペアのタイプを格納できるかを単純に知りません。map.put (key, value. ) はコンパイル段階では検出できません。QueryD を使用すると、パラメーターの型と制限を正確に定義できます (JSR 303 検証)

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-05-27 17:43:05

    私の理解が正しければ

    データ クエリ オブジェクトは、dao クエリ メソッドの パラメータのカプセル化 を参照し、メソッドの戻り値を参照しません。これの利点は、コードが 可読性 高く、直接使用できることです。しかし、あなたのクエリはそれをまったくサポートしていませんが、ユーザーに確実に知らせるにはどうすればよいですか?map作为接口参数, 使用者想要确定具体的查询条件非常困难, 而且给外部接口调用的灵活性太高, 比如 使用者在map中增加一个x

    dao の戻りパラメータは、ドキュメントの要件に従って do/dto.

    を使用する必要があります。

    返事
    0
  • 黄舟

    黄舟2017-05-27 17:43:05

    これは主に、デバッグとメンテナンスの難しさが原因であるように感じられます。たとえば、キーのスペルミスは、クエリが実行されるまで報告されません。

    返事
    0
  • 黄舟

    黄舟2017-05-27 17:43:05

    マップの利点:

    リーリー

    Javabeans の利点をご覧ください:

    リーリー

    長所と短所を比較検討し、チーム開発と JavaBeans の方が優れている場合は、個人のプロジェクトは問題ではありません。
    追加大歓迎です! ~

    返事
    0
  • キャンセル返事