JPQL和SQL的比较

时间:2022-08-15 10:14:38

前言

在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。它是JPA规范的重要组成部分,其实它就是一种查询语言,语法类似于SQL语法,但是有着本质的区别,下面来一起学习下吧。

JPQL与SQL的区别

JPQL是面向对象的查询语言,因此它可以完全理解继承、多态和关联等特征。而且JPQL内置了大量函数,极大地方便了JPQL查询的功能。当然JPQL底层依然是基于SQL的,但JPQL到SQL的转换无须开发者关心,JPQL解析器会负责完成这种转换,并负责执行这种转换的SQL语句来更新数据库。

    SQL是面向关系数据库的查询语言,因此SQL操作的对象是数据表、数据列;而JQPL操作的对象是实体对象,对象属性。

代码对比

SQL:

//原生的SQL语句
select name,age,user_id from t_user

JPQL:

//面向对象的JPQL语句
select name,age,userId from User

分析:

    第一条语句用于对t_user table表执行查询,查询name、age、user_id三个数据列;

    第二条语句用于对User实体执行查询,查询的是User实体的name、age、userId 属性。

JPQL基本语法

select 实体别名.属性名,实体别名.属性名……
from 实体名 [as] 实体别名
where 实体别名.实体属性 op 比较值

代码示例

//根据bookId查询图书信息
SELECT c FROM TBook c WHERE c.id=:bookId and c.isDelete=0
//更新bookId更新图书信息
UPDATE TBook b SET b.isDelete=1 WHERE b.id=:bookId

小结

JPQL和SQL的比较

总结

JPQL是一种面向对象的查询语言,和hibernate HQL很相似。后续博客将会为大家介绍JPQL的查询参数和几种常见的查询方式。