前言
在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是一种面向对象的查询语言,和hibernate HQL很相似。后续博客将会为大家介绍JPQL的查询参数和几种常见的查询方式。