当前位置: 首页 > 知识库问答 >
问题:

Spring Data findById与联接查询性能的关系

章晗日
2023-03-14

我有一个@onetomany关系在一个实体之间,比如说类和学生。现在每个班至少有100名学生。这就是我与学生的关系在班级实体中的定义

@OneToMany(mappedBy = "classDataEntity", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<StudentDataEntity> studentDataEntities;

为了检查通过ID(PK)获取类的性能,我们使用了两种方法

    null
@Transactional
public ClassDataEntity fetchClassEntity(Long classId){
    ClassDataEntity classDataEntityJOined  = repo.fetchClassWithStudents(id);
    ClassDataEntity classDataEntity  = repo.findById(id);
}

是否因为具有id的数据已经在会话中?另外,当通过Crud存储库调用Hibernate会话时,何时创建和销毁Hibernate会话

共有1个答案

阮桐
2023-03-14

是的,这是因为数据已经在持久性上下文中了。如果删除@transactional,您应该看到执行了两个查询,因为这样持久化上下文就不会共享(除非在spring中启用了open-session-in-view)。

 类似资料:
  • 问题内容: 我对子查询的性能/连接另一个表有一些疑问 这是我的SQL,现在这个东西可以运行大约一百万次或更多。我的问题是什么会更快? 如果我更改为() 或者 如果我将’HelpTable’添加到中并在中进行联接? edit1 好吧,此脚本仅运行与r个人一样多的人。 我的程序有2个模块,一个模块填充,另一个模块传输数据。该程序确实将2个数据库合并在一起,因此有时会使用相同的Key。 现在,我正在研究

  • 问题内容: 我是一个老派的MySQL用户,并且始终喜欢子查询。但是如今,每个人都使用子查询,而我讨厌它。我不知道为什么 我缺乏理论知识来自行判断是否存在差异。子查询是否与a一样好,因此不必担心吗? 问题答案: 取自MySQL手册 (13.2.10.11将子查询重写为Joins): LEFT [OUTER] JOIN可以比同等子查询更快,因为服务器可能可以更好地对其进行优化-这不仅限于MySQL S

  • 问题内容: 我重构了从另一家公司继承来的应用程序的慢速部分,以使用内部联接而不是子查询,例如: 重构查询的运行速度大约快100倍。 (约50秒,约0.3秒)我期望有所改善,但是谁能解释为什么如此剧烈?where子句中使用的列均已建立索引。SQL是否在where子句中每行执行一次查询? 更新 -说明结果: 区别在于查询“(id)in()”的第二部分- vs 1带有连接的索引行: 问题答案: “相关子

  • 我有一个查询,以获得用户的朋友的数据。我有三个表,一个是user表,第二个是user_friend表,它有user_id和friend_id(都是user表的外键),第三个表是feed表,它有user_id和feed内容。饲料可以给朋友看。我可以通过两种方式查询,要么通过join查询,要么通过使用子句查询(我可以通过graph数据库获取所有朋友的ID,我正在使用它进行网络连接)。 以下是两个查询:

  • 简介 Cabal-DB 的关联数据查询主要用了两个方法:->has('table') 和->belongs('table'), 因为其实数据库关联关系只有两种,一种是拥有(has)另一种是属于(belongs),如: 用户拥有更多个文章 文章拥有多个标签 文章属于一个用户 文章标签关联记录属于一个标签和一篇文章 语法 拥有关系查询语法: $row->has($name, $foreignKeyOr

  • 问题内容: 我正在为创建的2个模型的终结点/项目的输出构建REST API: 项目: 参加者: 可以说,我有10个项目:(1个查询) 我遍历了所有10个人,但我也希望所有参与者: 因此,在循环结束时,Phalcon对每个项目进行了额外的查询。 这些查询是通过访问$ result->参与者进行的,同时迭代了10个项目: 题 有没有一种方法可以事先查询关系,因此将是一个查询。 当我使用Phalcon提