gpt4 book ai didi

java - Named Query or Native Query or Query 从性能角度看哪个更好?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:34 28 4
gpt4 key购买 nike

以下哪一个更好(EJB 3 JPA)

//查询

一个)。 getEntityManager().createQuery("select o from User o");

//命名查询,其中 findAllUser 定义在实体级别

b). getEntityManager().createNamedQuery("User.findAllUser");**

//原生查询

c). getEntityManager().createNativeQuery("SELECT * FROM TBLMUSER ");

请解释一下哪种方法在哪种情况下更好?

最佳答案

  1. 创建查询()

    它应该用于动态查询创建。

    //Example dynamic query
    StringBuilder builder = new StringBuilder("select e from Employee e");
    if (empName != null) {
    builder.append(" where e.name = ?");
    }
    getEntityManager().createQuery(builder.toString());
  2. 创建命名查询()

    它就像一个常量变量,可以通过名称重复使用。你应该在常见的数据库调用中使用它,例如“查找所有用户”、“按 id 查找”等。

  3. createNativeQuery()

    这将创建一个完全依赖于底层数据库的 SQL 脚本语言支持的查询。当需要复杂的查询并且 JPQL 语法不支持时,它很有用。

    但是,如果底层数据库从一个更改为另一个,它可能会影响您的应用程序并需要做更多的工作。一个例子是,如果您的开发环境是 MySQL,而您的生产环境是使用 Oracle。此外,如果有多个结果,则返回的结果绑定(bind)可能会很复杂。

关于java - Named Query or Native Query or Query 从性能角度看哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180597/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com