JPQL与NativeSQL
来源:互联网 发布:it算法工程师笔试题目 编辑:程序博客网 时间:2024/06/03 19:38
JPQL只有select、update和delete操作,没有insert操作,EntityManager.persist()也不是JPQL的一部分。select等四操作对应的EntityManager的方法为find、merge、remove、persist。
JPQL与SQL的语法很相近,但是使用JPQL的queries返回的是实体实例(具体类型而非抽象类型)的集合,而NativeSQL的queries返回的也是实体实例,而不是数据库表,但是类型全为Object而非Entity的具体类型。
JPQL处理的是JPA实体,而Native SQL处理的是相关的数据。
JPQL也支持查询实体的部分属性,但查询后返回的不再是实体对象,而是Object类型的对象。
如果进行批量更新或删除操作,您必须使用executeUpdate()方法(单个的更新有find+setter方法,单个的删除有find+remove),它返回已更新或删除的实体实例的数量。但是批处理操作executeUpdate最终转换成SQL并在数据库中执行,绕过了持久化环境(persistencecontext),因此不会将任何修改应用于受管理的实体,即托管状态被容器管理的实体并没有修改或更新。这时,需要用refresh()方法来刷新实体对象,容器将数据库中的最新值重写进实体对象。
NativeSQL,除了做select查询之外,还有另一种应用是调用存储过程。使用createNativeQuery()方法指明调用,之后用query.executeUpdate()、query.getResultList()、query.getSingleResult()来获取结果。
举例如下:有一个存储过程,名称为AddUser(),那么,em.createNativeQuery("{call AddUser()}")
JPQL操作的就是抽象持久化模型,即一个持久化单元(persistenceunit
)中实体所表示的模型。使用NativeSQL,你可以直接查询数据库中表的字段;使用JPQL,你可以查找实体的属性。一个JPQL语句的各个组成部分都是针对实体或者实体的属性进行操作。你根本不会用到一个实体所映射的数据库表和字段。
除实体名称和实体字段外,JPQL查询不区分大小写。所以在查询的其它部分你可以使用任意形式。
- JPQL与NativeSQL
- JPQL与NativeSQL比较
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- JPQL
- ABAP简介以及OpenSQL与NativeSQL的区别
- Hibernate3的NativeSQL查询
- 读论文笔记-主题-semantic compositionality
- 学习书籍
- CentOS 6.5系统编译安装MySQL 5.6详细过程
- "Str2$"变量未定义(学生信息管理系统问题之一)
- C++结构体之统计最高最低分
- JPQL与NativeSQL
- UVA 1025 - A Spy in the Metro(动态规划)
- DO-214AC封装尺寸图
- excel导出-------java
- livepool 抓包工具的安装与配置
- 经纬财富:辽源区间震荡,金银顺势操作
- 上海sap培训市场价格
- 将Matlab的M文件转为P文件和exe可执行文件达到加密效果
- c#—WinForm/WPF全屏 隐藏标题栏和任务栏