JPQL和SQL的比较
前言
在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的查询参数和几种常见的查询方式。
JPQL和SQL的比较的更多相关文章
- SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询
上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...
- jpql和sql的区别
项目使用jpa规范 其中既可使用面对对象查询(jpql语句) 又可使用原生sql查询; 1.(经后期验证,jpql都可以) 其中有一个区别是: jpql查询字段为空: " cr.owner ...
- SQL、HQL、JPQL、CQL的对比
SQL:全称结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据 ...
- 条件查询、SQL、JPQL、HQL比较
一.什么是JPQL 在 Java EE 中,JPQL( Java 持久性查询语言)是专门为Java 应用程序访问和导航实体实例设计的.JPQL是EJB2使用的查询语言EJB QL的扩展,它继承了EJB ...
- [转] JPQL
原文地址:http://blog.csdn.net/suncaishen/article/details/6512028 select name ,age from user; //原生SQL语句 s ...
- JPQL详解
JPA在说jpql之前必须要说一下什么是JPA,否则在后续学习的时候,你会弄混的.JPA是一种规范,什么是规范呢,规范就是一个钥匙可以开这把锁.一般对于规范来说我们都是用接口,如果有人要我们则实现我们 ...
- JPA 开发写SQL时候遇见的困难点
官方文档 https://docs.spring.io/spring-data/jpa/docs/1.11.16.RELEASE/reference/html/#repositories.specia ...
- SpringDataJpa的批量 保存 修改 操作
SpringDataJpa进行修改数据库操作有两种方式: 一.调用保存实体的方法 1.保存一个实体:repository.save(T entity) 2.保存多个实体:repository.save ...
- Spring-Data-JPA @Query注解 Sort排序
当我们使用方法名称很难,达到预期的查询结果,就可以使用@Query进行查询,@Query是一种添加自定义查询的便利方式 (方法名称查询见http://blog.csdn.net/niugang0920 ...
随机推荐
- V4L2驱动内核文档翻译(一)
随着一些视频或者图像硬件的复杂化,V4L2驱动也越来越趋于复杂.许多硬件有多个IC,在/dev下生成多个video设备或者其他的诸如,DVB,ALSA,FB,I2C ,IR等等非V4L2的设备.所以, ...
- ubuntu安装sublime教程
1.安装Sublime Text 3 及常用的神器插件 ①首先添加sublime text 3的仓库:sudo add-apt-repository ppa:webupd8team/sublime-t ...
- Kettle入门教程
最近做的项目用到了ETL工具Kettle,这个工具相当好用,可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据.正如其名“水壶”,将各个地方的水倒进水壶里,再用水壶倒入不同的容器.不过一来初 ...
- OracleDesigner学习笔记1――安装篇
OracleDesigner学习笔记1――安装篇 QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一. 前言 Oracle是当 ...
- svn知识点
svn checkout [url] [dir]: 从版本库中检出代码到本地文件夹 svn status :查看当前工作副本的代码变更状态信息 svn diff [file]:比对工作副本与版本库之间 ...
- bzoj 3674 可持久化并查集加强版——可持久化并查集
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用主席树维护 fa[ ] 和 siz[ ] .改 fa[ ] 和改 siz[ ] 都 ...
- Microsoft Dynamics CRM 2011 配置好的IFD环境 怎么制作证书?
一.CRM2011 IFD怎么制作证书? 配置好的IFD环境里面:打开开始—运行 1.输入: mmc(微软管理控制台) 出现: 2. 出现: 3.添加/删除管理单元,如图: 4.添加证书 5. 6. ...
- Hadoop集群环境搭建步骤说明
Hadoop集群环境搭建是很多学习hadoop学习者或者是使用者都必然要面对的一个问题,网上关于hadoop集群环境搭建的博文教程也蛮多的.对于玩hadoop的高手来说肯定没有什么问题,甚至可以说事“ ...
- 【python】实例-用户登录系统
有N,E,Q三个选择,若选择Q或者中断,则系统退出.若其他选项,则持续让用户选择. #!/usr/bin/env python db = {} def newuser(): prompt = 'log ...
- Ajax异步上传多个文件并返回文件路径
前端JSP页面代码 <label>附件:</label><form id="fileForm"> <input type="fi ...