私はJPAについて楽観しないでください

ほとんど質問「SpringBootはMyBatisのか、春データJPAを使用して開発??」、便利な白熱した議論を参照してください知っています。春のデータのJPA Hibernateはその実装として選んだ理由私は本当に理解していない、「Gavin King氏」縁故主義はなぜですか?DAO層だけで行くに保たれ、MyBatisのは、休止状態へのJDBCから勝つ、JDOからTopLinkは、今までの、理由があります。

現在、いくつかのたわごと研修会社では、一部の外国のコースを含め、いくつかのオンラインコースは、簡単なプロジェクトを行うためには、それらの多くはJPAを使用しますが、あります。しかし、同社は、単純ではない場合、これは理論と現実との間の差であることがわかりました。

批判される危険性を立ち向かい、私が送信するように手配する。これは良い引数PHPやJavaの良い自然ではありません。

アドバイス:エネルギーは限られている、我々は最初のMyBatisのああを学ぶ必要があります。JPAはセットには、そのような単純な表面。

以下は、オリジナルの答えは

あなたは、特に複雑なプロジェクトでは、同社の製品の複数の反復を経験している場合、あなたは見つけるでしょうSpring Data JPAこの種のものを喜ばせる方法ではありません。正直に言うと、Mybatis時々あまりにも多く、およびいくつかの単純余分される機能と。

jpaノルムが、しかし、およびけれどもhibernate、これはORM、よりルックスのようなものです(何か具体的な使用シナリオを言うことはありません)。

春データJPAは、単純なマッピング関係にのみ適し、おもちゃですまた、もてはやさ人を言及する必要がありquerydsl、私はいくつかのwiseacre簡単な方法を感じます。本当に簡単DAO層を望んでいないために、報われない事のいくつかを学ぶために。

List<Person> persons = queryFactory.selectFrom(person)
  .where(person.children.size().eq(
    JPAExpressions.select(parent.children.size().max())
  .from(parent)))
  .fetch();
复制代码

完全に通常よりも、上記のクエリを見てSQL表現の明快。緊急調査の質問、ママの卵の場合...

JPAが、このようなSQLと実行する基礎となる何もないとして、多くの利点があります。しかし、私は春データJPAは、次のような欠点を持っていると思います。

1は、SQLの優雅さをシールド、クエリを所有する方法を発明しました。このクエリは、SQLシーンのすべてをカバーすることができません。

2は、DAOを理解するために多くの時間を費やす必要があり、コードの複雑さを増します

図3は、特別な操作は、DAOの複数のJavaファイルに分散し、分散、または注釈(ただしサポートXML)の変異体です。スキャン数は、または最適化された場合は、大規模な復興費

4、複雑なSQLをサポートしていない、DBAプロセスはカットする良いではありません

MyBatisのそこにいくつかの問題がありますが、あなたは、正確なSQLで書くよりのようなものの。それは春データJPAよりも軽量です。

限り、あなたは他の場所で良いSQLをデバッグするよう、唯一のあなたは名前、および変換プロセスのはるかに少ない脳の燃焼を使用することができ、設定ファイルに記述する必要があります。

複雑なSQL工業用グレード、あるいはストアドプロシージャを扱うことが十分にできMyBatisの(推奨されません)。個人的に私はMyBatisのはまだそれがまた他の人の場合は、いくつかのプログラミング言語は似たような機能を追加され、複雑に従事していると思います。

あなたの会社は、DBAがある場合は、SQLを台無しに許可されていません。より多くのではMyBatisのは、同社のプロセスにカット。

だから私は思う:おもちゃのプロジェクトや急速な発展、春ブーツJPAを使用します。それどころか、MyBatisのが好ましいです。

いくつかの有用なコメント

あなたはそれをステッチSQLを指し、それ以外の場合、これはMyBatisのの重要な機能の一つであると述べ、全く大丈夫、学ぶために複雑ではありませんか?


最近の研究ではまた、層を永続性、あなたはこのJPAのこのおもちゃを活用することができ、両方の組み合わせが良い選択、JPAの基本的な単一テーブルの操作で、MyBatisの複雑なクエリ、高い開発効率を行い、メンテナンスコストのSQLを削減するだけでなく、最適化のための余地を残しますもちろん、我々は春・データ-JPAにいくつかの拡張を行う必要があります


直接SQL、またはその他の便利なORMクエリ


主にネイティブSQLをMyBatisの、他の開発者のためのJPAは、保守しきい値学習を減少させ、そして本当にJPAはあなたが追いかけて鍋を書きましたが、それはまだかなり頭痛で学んでいません...

MyBatisのプラスの基本的なカードの統合後のもつれせず、直接オブジェクト操作の多くは、その後、十分に保存します。パフォーマンスの最適化問題は、以下のsqlAdviceで表すことができるような複雑なシーンは、直接、ネイティブテーブルのSQLのように関連付けられています。


JDBCテンプレート+コードジェネレータ、よりシンプルかつ効率的に


JPAは、このようなものは、そのような単一のテーブル、非常に良い使用で動作するような単純なデータベース操作を、書きます。マルチテーブル場合は、それを忘れてしまいました


春ブーツ勧告JPA、なぜ知っています


真=ネイティブネイティブクエリを使用したいと誰のは、ああ、あなたを停止しません


あなたは本当にHibernateとJPA理解していないように見えます...


私はquerydsl、そこにあなたがJPAとの関係を知っていれば知っている、休止状態、春データJPAはありません。


いつかあなたは、データベースプログラムの優先度や優先順位の違いを知っているだろう


JPAは、ああそれはハンサムな鍋で、別の利点を持っています

終わり

ああ、私をスプレーし、より多くの傲慢若い男が来ます。

ます。https://juejin.im/post/5cf0f43bf265da1b86086e50で再現

おすすめ

転載: blog.csdn.net/weixin_34293141/article/details/91438453