春データ保存方法と休止保存方法の違いは何ですか?両方とも同じように機能しますか?春データ保存と休止保存の違いは何ですか?
@注:私は評判が許されていないので、タグとしてspring jpaを追加できません。
春データ保存方法と休止保存方法の違いは何ですか?両方とも同じように機能しますか?春データ保存と休止保存の違いは何ですか?
@注:私は評判が許されていないので、タグとしてspring jpaを追加できません。
HibernateのSession.save()
は、JPAには存在しない独自のHibernate操作です。基本的にはEntityManager.persist()
と同じことをしますが、IDが生成されて返されることを保証します。同じカスケードは適用されません。なぜなら、HibernateにはもちろんJPAに存在する独自のSAVEカスケードオプションがあるからです。
Spring-data-jpaのSimpleJpaRepositoryの保存操作では、エンティティが新規と見なされる場合はEntityManager.persist()
、エンティティが新規と見なされる場合はEntityManager.merge()
が呼び出されます。
だから、同じものではなく、同じように動作しません。
JPA、Hibernate、およびSpring Data JPAの関係が正確にわかっている場合は、この方が理解しやすいでしょう。
JPA(Java Persistence API)は、JavaでORM(object-relational mapping)を実行するための標準インタフェース仕様です。インターフェイス自体を実装するわけではないことに注意してください。ソフトウェアで使用するには、JPA仕様を実装するライブラリが必要です。
HibernateはJPAの実装であり、JPA仕様を実装するライブラリです。
Spring Data JPAはSpring Frameworkのサブプロジェクトであり、JPAを使用してSpringフレームワークの残りの部分に統合することを容易にします。
Spring Data JPAを使用する場合は、プロジェクト内にJPAの実装(Hibernateなど)も必要です。
Spring Data JPAが提供するインターフェイスとクラスを使用し、実際にデータベースと通信するJPA実装(Hibernate)と通信します。
Spring Dataからエンティティを保存するJPAは最終的にHibernateを呼び出してエンティティを保存します。したがって、最終的には同じ効果が得られます。
ただし、Spring Data JPAを使用している場合は、Hibernateを直接使用するべきではありません。実際には、自分のコードでHibernateに直接参照することは一切ありません。コード内でHibernateを直接使用すると、Spring Data JPAを完全にバイパスできます。