由于java视频里以前好多都是SSH。但是在实际工作中没见过用hibernate的,基本都用mybatis。
我有一些疑问:
hibernate碰到什么样的业务会变成致命的弱点,都说hibernate效率低,能否举个例子(例如同一个查询用mybatis查询耗时1秒,用hibernate查询耗时10秒)
可能是有部分人遇到了hibernate的瓶颈,但是这部分人的业务量我觉得,不是大部分使用hibernate的人都能遇到的。一般的小项目,不超过100个用户,这样的项目综合考虑的话更适合用mybatis还是hibernate?主要从开发效率上来说的话。为什么?
天蓬老师2017-04-18 09:34:16
http://www.oschina.net/p/monalisa-core を試すことができます。Eclipse プラグインと併用すると便利です。
DTO の自動生成をサポート
SQL クエリでは、Mybatis のように DTO を作成する必要はなく、プラグインによって一連のフィールド マッピングが自動的に設定されます。
参考記事: 動的 SQL コードに基づいて DTO を自動的に生成する方法
複数行の文字列構文
Java コードで複数行の文字列を記述するのが非常に簡単になります。
DataTable オペレーション
DataTable を使用すると、便利なフィールド選択、フィルタリング、集計、グループ化、JOIN などを使用してデータベース テーブルをクエリできます。
大家讲道理2017-04-18 09:34:16
hibernate
は単一のテーブルの追加、削除、変更に適しており、開発効率が非常に高いですが、事業が拡大したり、元々の db
の設計が良くない場合には、テーブルを結合する必要があります。クエリ (Hibernate の考え方はテーブルを分類することであるためですが、実際にはプロジェクトの開始時に完全な一般化を達成するのは簡単ではありません) 異なる結果に加えて削除や照合を行うと効率が低下します (SQL を記述しない限り、ただし、この方法では最初は mybatis を使用する方が良いです)、特に大量のデータに遭遇した場合、効率は指数関数的に低下します。
ユーザーが 100 人以下ですか?ここでの桁数は単一のテーブルに基づいて計算されるわけではありません。単一のテーブルが一定量を超える場合は、単純に hibernate
や mybatis
を使用するだけでは解決できません。 mybatis
を使用すると変更されます。私の経験から言えば、多数の結合テーブル クエリが含まれ、ビジネスが複雑な場合 (通常、これはプロジェクトの最後まで当てはまります)、mybatis
よりも単純なものを使用するのが最善です。 (hibernate
)开发效率
伊谢尔伦2017-04-18 09:34:16
Hibernate の学習コストは比較的高いですが、j2ee には JPA 仕様があり、その仕様を学習するだけで問題ありません。 Mybatis は比較的シンプルで、使いやすく、制御しやすいです。 Hibernate は学習コストが高く、過度にオブジェクト指向であり、調整が困難です。使い方は人によると思いますが、toBやtoCのアプリケーションであればmybatisが良いと思いますが、管理用のバックエンドであればhibernateでも大丈夫です
天蓬老师2017-04-18 09:34:16
ご招待いただきありがとうございます!以下の回答はすべて非常に良いものです。第一に、MyBatis は習得が簡単です。第二に、パフォーマンスに関しては、開発効率と保守性の方がはるかに重要です。 。
ringa_lee2017-04-18 09:34:16
hiberbate は Java オブジェクトを使用して SQL を書き込みますが、mybatis はネイティブ SQL を直接書き込みます。前者はしばらく開発するのに楽しく、火葬場 (変更) を維持します。後者は (前者と比較して) SQL の知識をある程度理解する必要があります。会社に DBA がいる場合は、ネイティブの言語を読む方がはるかに直感的です。 Java コードよりも SQL。パフォーマンスに関しては、ほとんどの場合、考慮する必要はありません (本当に考慮したい場合は、近年議論されている「ORM の削除」を検索してください)。最も重要なのは保守性です。
伊谢尔伦2017-04-18 09:34:16
Hibernate と mybatis はどちらも単なる JDBC のカプセル化です。プログラムのパフォーマンスが良いかどうかは、主に SQL が適切に記述されているかどうか、および Hibernate の多くの SQL はプログラムによって実装されています。この 2 つのフレームワークはどれも非常に優れており、使用する際のパフォーマンスに大きな違いはありません。次に、Hibernate がカプセル化されすぎているという問題が発生します。Mybatis は単なる jdbc のカプセル化です。さらに、Hibernate は多くのシナリオで使用され、特に熟練していない場合は、Mybatis の方が単純で、あまり多くの機能を実行しない場合があります。通常、プログラムの結果で問題が発生することは容易に予測できます。
どちらのフレームワークも実際には非常によく設計されていますが、mybatis に慣れている人は通常、休止状態に切り替えるのが難しいと感じます。 mybatis は意図的に使用してください (個人的な意見です)。
伊谢尔伦2017-04-18 09:34:16
実際の仕事での Mybatis の使用は、基本的にパフォーマンスや使いやすさの考慮に基づくものではなく、個人の習慣に基づいています。
私たちのような古いプログラマーは SQL を書くことに慣れており、SQL を書かないと不快に感じるでしょう。対照的に、あまりにも自動化された休止状態は、私たちをパニックに陥らせる可能性があります。
以上です。
黄舟2017-04-18 09:34:16
学習段階で使用した私の個人的な感想は、Hibernate はカプセル化されすぎているということです。多くの場合、便利ではなく、このフレームワークと「調整」するために一見不必要に見える操作を実行する必要があると感じます。
伊谢尔伦2017-04-18 09:34:16
業務量が比較的少ない場合は、どちらの分野に精通しているかによって異なります。大丈夫ですよ。これについては心配する必要はありません。 Mybatis はより柔軟であり、開発者が独自に実装する余地がさらに広がります。わずかに遅いのは休止状態の関連付けが原因であるはずです。