Hibernate和Spring数据JPA之间的主要区别是什么?我们什么时候不应该使用Hibernate或Spring数据JPA?另外,什么时候Spring JDBC模板的性能会比Hibernate/Spring数据JPA更好?

推荐答案

Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象.没有JPA提供程序,Spring数据JPA无法工作.

Spring Data为DDD Repository pattern或旧版GenericDao定制实现提供了解决方案.它还可以通过方法名约定代表您生成JPA查询.

对于Spring数据,您可以使用Hibernate、EclipseLink或任何其他JPAProvider .使用Spring或JavaEE的一个非常有趣的好处是,可以使用@Transactional注释声明性地控制事务边界.

Spring JDBC要轻量级得多,它用于本机查询,如果您只打算单独使用JDBC,那么最好使用Spring JDBC来处理JDBC的繁琐.

因此,Hibernate和Spring数据是互补的,而不是竞争对手.

Java相关问答推荐

Proguard配置以保留具有参数的注释的成员

获取拦截器内部的IP地址

是否有一种格式模式,可以在除0之外的数字前面有正负符号?

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

inteliJ中是否有一个功能可以自动在块注释中的/*后面添加一个空格?''

Java模式匹配记录

基本时态运算的ISO-8601周数据表示法

无法处理批处理侦听器中的反序列化异常

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

SonarLint:只能有条件地调用方法(S)

Java SSLKeyManager出厂密码

使用While循环打印素数,无法正常工作

如何在JUNIT测试中覆盖ExecutorService?

与IntArray相比,ArrayList<;Int>;对于大量元素的性能极差

Cordova Android Gradle内部版本组件不兼容

Java创建带有扩展通配符的抽象处理器

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

从Spring6中的JPMS模块读取类时出现问题

IntelliJ IDEA依赖项工具窗口丢失

为什么Java编译器为没有参数的方法(getter方法)创建桥接方法