小编Smr*_*ool的帖子

条件查询和本机查询哪个更快?

我有一个表 Admin,其中可能包含 1000 条甚至更多记录。现在,我对使用哪个查询感到困惑,这样获取整个数据时的性能不会受到影响。

我尝试使用本机查询和条件查询来获取数据,但仅限于少量数据。我也研究了相关问题,但并不能完全满足我的问题。

哪个 SQL 查询更快,为什么?

命名查询、本机查询或条件 API

原生查询比 Hibernate 中的 HQL/Criteria 查询更快

hibernate原生查询和HQL哪个性能更好

我的实体类看起来像:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String username;

private String emailAddress;

private String password;

private Character status;
Run Code Online (Sandbox Code Playgroud)

使用条件查询:

 public List<Admin> fetchAdmin() {

    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Admin> criteria = builder.createQuery(Admin.class);

    List<Admin> adminList = entityManager.createQuery(criteria).getResultList();

    return adminList;
}
Run Code Online (Sandbox Code Playgroud)

使用本机查询:

@Query(value = "SELECT * FROM admin", nativeQuery = true)
List<Admin> fetchAllAdmins();
Run Code Online (Sandbox Code Playgroud)

我期望选择一个可以获取大数据的查询。

java mysql

5
推荐指数
1
解决办法
6460
查看次数

如何在 Spring Boot 应用程序中手动注册非标准化 SQL 函数?

我在当前的 spring-boot 项目中使用 JPA 查询。如何添加非标准化 SQL 函数,如GROUP_CONCAT

之前,我以前的问题: 如何在 JPA 查询中的一行逗号分隔列表中显示列结果

我发现 GROUP_CONCAT 不是 JPA 查询中的注册函数,但可以通过手动注册来访问它。我已经尝试过以下链接,但对我不起作用:

如何在 Spring Boot 应用程序中添加非标准化的 sql 函数?

使用 JPA 和 Hibernate 注册 SQL 函数

https://thoughts-on-java.org/database-functions/

https://vladmihalcea.com/hibernate-sql-function-jpql-criteria-api-query/

1.

public class SqlFunctionsMetadataBuilderContributor
        implements MetadataBuilderContributor {

    @Override
    public void contribute(MetadataBuilder metadataBuilder) {
        metadataBuilder.applySqlFunction(
                "group_concat",
                new StandardSQLFunction(
                        "group_concat",
                        StandardBasicTypes.STRING
                )
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

2.

 public String render(Type firstArgumentType, List arguments, SessionFactoryImplementor factory)
            throws QueryException {
        if (arguments.size() < 1) {
            throw new QueryException(new IllegalArgumentException("group_concat should have at …
Run Code Online (Sandbox Code Playgroud)

java mysql spring jpa jpql

1
推荐指数
2
解决办法
1982
查看次数

标签 统计

java ×2

mysql ×2

jpa ×1

jpql ×1

spring ×1