私は春-データ-JDBC MyBatisのに統合を提供している理由を理解したいと思います。
- それはどのような問題を解決するのですか?
- 春・データ-JDBCほめるMyBatisのはどうです。
- それは、リポジトリへのマッパーを適合させるだけの問題ですか、それはその超えました。
- 私はちょうどマッパーを使用することができるときなぜ春-データ-JDBCとの併用MyBatisの中で使用します。
一言で言えばspring-data-jdbc
、ドメイン駆動設計提供してリポジトリのJDBC APIを提供してストアの実装を。それは(あなたがJPAとそれを比較する場合は特に)、概念的に非常に単純なことをしようとします。そして、それは、ORMの複雑さを隠す抽象化を導入しようとしないという意味で、MyBatisのに似ています。
ここからの引用だspring-data-jdbc
ドキュメントは:
- あなたはエンティティをロードする場合は、SQL文が実行されます。これが行われたら、完全にロードされたエンティティを持っています。いかなる遅延ローディングやキャッシュは行われません。
- あなたは、エンティティを保存する場合は、保存されます。そうでない場合は、それはしていません。ダーティ追跡なしのセッションはありません。
- テーブルにエンティティをマッピングする方法の簡単なモデルがあります。それはおそらく唯一のむしろ簡単なケースのために働きます。あなたはそれが気に入らない場合、あなたはあなた自身の戦略をコーディングする必要があります。春データJDBCは、注釈と戦略をカスタマイズするためのサポートは非常に限定されています。
spring-data-jdbc
MyBatisのなしで使用することができます。クエリはどちらかという単純なルールを使用して、メソッド名から生成されているか、明示的に使用して指定され@Query
た注釈を。
これはMyBatisのに統合を提供しません、これはすなわち、MyBatisので利用可能なすべての機能をMyBatisのマッパーを使用してクエリを指定するには、第三の方法を使用することができます。これはまだ単純なクエリのリポジトリメソッド名に基づいて自動的にクエリ生成を使用しながら、より複雑なマッピングを作成することができます。
でも、単純なCRUD操作のためのSQLクエリを作成するには、時には必要はMyBatisの中に制限または問題として見られています。spring-data-jdbc
アプリケーションに追加の抽象化層(リポジトリ)を導入するの価格でこの問題を解決することを可能にします。私が言うadditional
ことはDDDリポジトリとしてMyBatisのマッパーを使用することが可能であるため。
アプリケーションはCRUD操作の多くを持っている場合は確かに非常に類似したコードや、いくつかのソリューションの多くは、に似て、一般的なCRUD作ることになりますhttps://github.com/rickcr/mybatis-generic-crudが導入され、使用されます。
spring-data-jdbc
むしろ、低価格ではなく、エレガントに、この問題を解決することができます。