【发布时间】: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