Java Hibernate命名查询与JDBC查询性能

Java Hibernate命名查询与JDBC查询性能,java,sql,hibernate,jdbc,Java,Sql,Hibernate,Jdbc,我的要求是只获取记录的可用性(不获取值)。对于这个场景,我的问题是,有什么更好的解决方案可以提高JDBC查询和HQL命名查询之间的性能 我认为,由于命名查询是在加载hibernate工厂时加载的,因此它可以比jdbc更快 请注意,这不是一个正常的HQL查询,我在这里询问命名查询。 普通HQL和命名查询可以具有不同的性能。大多数问题和答案都与正常的HQL有关。我这里的重点是命名查询。Hibernate非常好。但是,大多数人在使用条件查询时都会遇到问题,因为他们不理解它应该只用于少量表,如5或更少的

我的要求是只获取记录的可用性(不获取值)。对于这个场景,我的问题是,有什么更好的解决方案可以提高JDBC查询和HQL命名查询之间的性能

我认为,由于命名查询是在加载hibernate工厂时加载的,因此它可以比jdbc更快

请注意,这不是一个正常的HQL查询,我在这里询问命名查询。


普通HQL和命名查询可以具有不同的性能。大多数问题和答案都与正常的HQL有关。我这里的重点是命名查询。

Hibernate非常好。但是,大多数人在使用条件查询时都会遇到问题,因为他们不理解它应该只用于少量表,如5或更少的表。如果您在企业级执行某些操作,请使用HQL查询,您拥有jdbc的所有功能。学习曲线也很高,但一旦你学会了什么都比不上。

我假设你的问题是“你应该在JDBC和Hibernate之间选择哪个选项”

首先,使用HQL,您已经准备好了查询,并且不会为每个请求生成查询。但是在hibernate中使用本机SQL的情况下,如果我没有错的话,查询将按需生成

JDBC也是如此。如果使用PreparedStatement,查询将在其生命周期中生成一次。几乎两者都是一样的。顺便说一句,您可以选择告诉hibernate是否需要在启动ORM引擎时生成查询。在JPA注释中,可以在@entity注释处使用dynamic=true


如果您已经在项目中休眠了/JPA基础设施,请使用它,否则请使用普通的JDBC选项

正如您所指出的,唯一不同的是避免了重复的解析开销。我们这里每秒讨论多少查询?@AniketKulkarni我当然同意“当你想从数据库中挤出每毫秒的时间时,Hibernate可能不是最好的解决方案。”引用你的链接问题。但我认为这两个问题并不完全相同-OP只想检查是否存在,因此不会有任何行/关联的加载,JDBC和Hibernate的性能可能会相当。我使用JPA标准查询,表数>30,非常好,谢谢。