如何在Java中提高Hibernate性能?

如何在Java中提高Hibernate性能?,java,hibernate,Java,Hibernate,我有数千条记录,需要在一次用户点击中检索。目前它给我的结果非常缓慢,我不得不等待很长时间。有没有办法改进使用hibernate检索这些结果 我有一个例子,其中一个具有select查询的方法将每分钟运行一次。这就是Hibernate给我带来缓慢结果的地方。我正在使用Hibernate和MySQL。如果您必须在网页上显示记录并一次性检索部分记录(例如100条),我建议您使用分页。常见做法是启用二级缓存和查询缓存。您的数据将从memmory而不是db读取 关于它的好文章 其他事情可能会有所帮助: 1索

我有数千条记录,需要在一次用户点击中检索。目前它给我的结果非常缓慢,我不得不等待很长时间。有没有办法改进使用hibernate检索这些结果


我有一个例子,其中一个具有select查询的方法将每分钟运行一次。这就是Hibernate给我带来缓慢结果的地方。我正在使用Hibernate和MySQL。

如果您必须在网页上显示记录并一次性检索部分记录(例如100条),我建议您使用
分页。

常见做法是启用二级缓存和查询缓存。您的数据将从memmory而不是db读取

关于它的好文章

其他事情可能会有所帮助:

1索引-如果存在where和ordering-您必须为正在搜索/排序的字段建立索引-这可以将搜索速度提高10倍


2非规范化-如果您有很多联接,一些非规范化(将所有联接放在一个表中)会有所帮助。但当其他一切都失败时,这应该是最终的解决方案。

这有点像说“一根绳子有多长?”。我们需要更多关于您的HQL的详细信息。只要一个简单的“where”子句就可以大大加快速度。您是否使用缓存?(hibernate.cache.user_query_cache=true)从数据库检索大量数据的速度很慢,不管是否休眠。减少正在检索的行数,例如,一次显示几百行。您的用户无论如何不能同时查看所有10000行,因此没有必要向他们显示那么多信息。检索10000行可能比检索1行快。但这完全取决于如何检索行,以及数据库中的索引。如果没有任何信息,就无法提供帮助。我有一个案例,其中包含select查询的方法将每分钟运行一次。这就是hibernate给我带来缓慢结果的地方非常感谢我将尝试这一点我有一个案例,其中包含select查询的方法将每分钟运行一次。这就是hibernate在启用二级缓存和查询缓存的情况下给我慢结果的地方,它将在第一次执行查询后填充实体。所以第一次可能需要慢慢来。但下次它将使用缓存的值。从内存中读取会更快我已经取消了一些表的规范,应用了所有可用的缓存,添加了一个连接池,但是hibernate返回一些查询仍然花了很长时间,在我看来,数据库中的qquery异常不是问题,但一旦返回结果集,hibernate将其转换为bean,有什么方法可以改进parsin吗?查询可以快速执行,但问题可能不是记录到bean的hibernate映射,而是通过网络从数据库读取记录?您可以在执行相同查询时检查它,并获取所有结果,而无需使用普通JDBC进行hibernate。如果需要相同的时间,那么这不是休眠问题。对于巨大的结果,您认为您真的需要查询并返回1000条记录吗?可能不会-例如,您可以通过分页来完成。如果是hibernate的问题,那么可能不值得使用hibernate。