Spring Data JPA相关概念,以及自定义查询

一:什么是Spring Data JPA:
1:Spring Data JPA是在JavaEE5.0后出现的—用于对象持久化的API
2:使得应用文件以统一的方式访问持久层
在这里插入图片描述
二:JPA与Hibernate的关系:
1:JPA 是 Hibernate 的一个抽象(就像JDBC和JDBC驱动的关系);
2:JPA 是规范:JPA 本质上就是一种 ORM 规范,不是ORM 框架,这是因为 JPA 并未提供 ORM 实现,它只是制订了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现;
3:Hibernate 是实现:Hibernate 除了作为 ORM 框架之外,它也是一种 JPA 实现
从功能上来说, JPA 是 Hibernate 功能的一个子集

三:Spring Data JPA的优势:
1:标准化: 提供相同的 API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。
2:简单易用,集成方便: JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下创建实体和创建 Java 类一样简单,只需要使用 javax.persistence.Entity 进行注解;JPA 的框架和接口也都非常简单。
3:可媲美JDBC的查询能力: JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
4:支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型
四:Spring Data JPA使用自定义查询的时候一些注意问题:
一:正确的写法
当查询内容与返回值泛型属性内容完全一致(个数,类型),有 返回值,不报错
在这里插入图片描述
当查询内容与返回值泛型内容不同的时候,不能写<对象>,应该直接返回一个list 或者list,但是前者只有值,没有键,无法区别是哪个值。后面那个则是一个MAP形式,只不过没有查询的内容,会返回null值,可以用序列化的方式解决,在Vo实体类中用序列化注解@JsonInclude(JsonInclude.Include.NON_NULL) ,便会屏蔽掉null值。
二:几种会报错的情况
当查询的内容是返回值泛型的子集的情况下,会报错:
Could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSetcould not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值