首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA的EntityManager createQuery() vs createNamedQuery() vs createNativeQuery()

JPA的EntityManager createQuery() vs createNamedQuery() vs createNativeQuery()
EN

Stack Overflow用户
提问于 2015-11-19 08:18:51
回答 3查看 124.2K关注 0票数 40

有谁能解释一下JPA's EntityManager的以下方法的区别吗?

  • createQuery()
  • createNamedQuery()
  • createNativeQuery()

并向我解释在什么情况下我们应该使用哪种方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-19 12:04:06

  1. CreateQuery:用于创建JPQL
  2. createNamedQuery:用于在映射文件或注释去看这个中定义具有名称的查询
  3. createNativeQuery:用于执行本机/纯SQL查询示例
票数 28
EN

Stack Overflow用户

发布于 2015-11-19 09:25:59

  • createQuery方法用于创建动态查询,这些查询是直接在应用程序的业务逻辑中定义的查询。示例: 公共列表findWithName(字符串名称){返回em.createQuery(“从客户c中选择c,其中c.name喜欢:custName") .setParameter("custName",名称) .setMaxResults(10) .getResultList();}
  • -- createNamedQuery方法用于创建静态查询,或使用javax.persistence.NamedQuery注释在元数据中定义的查询。@NamedQuery的name元素指定将与createNamedQuery方法一起使用的查询的名称。@NamedQuery的查询元素是查询: @NamedQuery( name="findAllCustomersWithName",query=“从客户c中选择c,其中c.name喜欢:custName”)

下面是createNamedQuery的一个示例,它使用@NamedQuery:

代码语言:javascript
运行
复制
    @PersistenceContext
    public EntityManager em;
    ...
    customers = em.createNamedQuery("findAllCustomersWithName")
    .setParameter("custName", "Smith")
    .getResultList();
  • createNativeQuery为执行本机语句创建查询实例。以下是选择createNativeQuery的一些理由
代码语言:javascript
运行
复制
- Low level access, which means that you can optimize and handle the mapping by yourself; with SQL you actually access the database table while with JPQL you access the entity objects;
- Maybe you do not want to learn JPQL if you already know SQL
- You already have the queries written in SQL, and do not have resources/time to port them to JPQL

欲了解更多详情,请访问以下链接:

使用Java持久性查询语言创建查询

为什么使用createNamedQuery?

为什么我们需要创建本机查询?

票数 64
EN

Stack Overflow用户

发布于 2017-11-10 06:32:39

CreateQuery用于创建JPQLqueries

createNamedQuery用于在映射文件或注释中定义具有名称的查询,例如:obj.createNamedQuery("entity.findbycode",Something.class)

createNativeQuery用于执行本机/纯SQL查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33798493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档