【问题标题】:Hibernate fetch eagerly takes very long timeHibernate fetch 急切需要很长时间
【发布时间】:2017-02-01 21:13:02
【问题描述】:

我有一个在服务器启动时运行的休眠查询,用于将数据从 Mysql 同步到我们的缓存服务器。

由于实体有另一个实体作为子实体,因此始终需要使用 Fetch=ALL。

使用 Hibernate 运行查询大约需要 3-4 分钟(这是一个包含大约 600 条记录的小表)。运行原生 SQL 查询需要 0.17 秒。我错过了什么?

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "hotLeadConfigId")
private Set<HotLeadSpecialPagesEntity> specialPages = new HashSet<HotLeadSpecialPagesEntity>();

这是我正在做的查询:

【问题讨论】:

  • 您是否将休眠初始化时间包括在 3-4 分钟内?
  • 将您的记录器设置为调试并发布由休眠执行的查询。在此过程中可能会有更多急切的连接
  • 3-4 分钟不包括休眠初始化 :)。将在几内发送日志
  • 你能告诉我们生成的SQL吗?
  • @RickJames 我很难让调试日志显示从休眠中生成的 SQL。

标签: java mysql database performance hibernate


【解决方案1】:

尝试用@Fetch(FetchMode.JOIN)@Fetch(FetchMode.SUBSELECT)注释它

请参阅The @Fetch annotation mapping 了解说明。

【讨论】:

    猜你喜欢
    • 2020-02-16
    • 2017-03-16
    • 2015-04-22
    • 1970-01-01
    • 2013-09-07
    • 2020-08-26
    • 2014-10-09
    • 2012-11-26
    • 2019-12-27
    相关资源
    最近更新 更多