# Hibernate v5-\>v6 upgrade - poor query performance

**URL:** https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981
**Category:** Hibernate ORM
**Created:** [December 4, 2022, 6:35pm UTC](https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981 "2022-12-04T18:35:41Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![JackPGreen](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jackpgreen/32/2110_2.png) [@JackPGreen](https://discourse.hibernate.org/u/JackPGreen)
#### Post date: [December 4, 2022, 6:35pm UTC](https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981/1 "2022-12-04T18:35:41Z")

</div>

I’ve upgraded an application using Hibernate v5 to v6, but after doing this a query has got very slow - \>10x slower.

Take the following simple application that persists 500,000 `MyEntity`s to a new in-memory database, retrieves them and prints performance metrics. It can be run with either Hibernate v5 or v6, as per the commented out section in `pom.xml`:

`MyApplication.java`:

```
package com.me;

import java.text.MessageFormat;
import java.time.Duration;
import java.time.Instant;
import java.util.Properties;
import java.util.stream.IntStream;

import org.h2.Driver;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.schema.Action;

public class MyApplication {
    public static void main(final String[] args) {
	Instant start = Instant.now();

	final Properties jpaProperties = new Properties();

	jpaProperties.put("hibernate.connection.url", "jdbc:h2:mem:");
	jpaProperties.put("jakarta.persistence.jdbc.driver", Driver.class.getName());
	jpaProperties.put("jakarta.persistence.schema-generation.database.action", Action.CREATE);

	try (Session session = new Configuration().addAnnotatedClass(MyEntity.class).addProperties(jpaProperties)
		.buildSessionFactory().openSession()) {
	    session.beginTransaction();
	    IntStream.range(0, 500000).mapToObj(i -> new MyEntity()).forEach(session::persist);
	    printTiming(start, "Setup / Publish");

	    start = Instant.now();
	    session.createQuery("FROM MyEntity", MyEntity.class).getResultList();
	    printTiming(start, "Get");
	}
    }

    private static void printTiming(final Instant startTime, final String label) {
	System.out.println(MessageFormat.format("{0} took {1}", label, Duration.between(startTime, Instant.now())));
    }
}

```

`MyEntity.java`:

```
package com.me;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class MyEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected Long id;
}

```

`pom.xml`:

```
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<groupId>com.me</groupId>
	<modelVersion>4.0.0</modelVersion>
	<artifactId>hibernate-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>2.1.214</version>
		</dependency>
		<dependency>
			<groupId>jakarta.xml.bind</groupId>
			<artifactId>jakarta.xml.bind-api</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate.orm</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>6.1.5.Final</version>
		</dependency>
		<!--<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core-jakarta</artifactId>
			<version>5.6.14.Final</version>
		</dependency>-->
	</dependencies>
</project>

```

`hibernate-core` `6.1.5`:

```
Setup / Publish took PT2.6288547S
Get took PT35.0881315S

```

`hibernate-core-jakarta` `5.6.14.Final`:

```
Setup / Publish took PT3.486003S
Get took PT2.3955987S

```

---

<div class="post-metadata">

### Author: ![JackPGreen](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jackpgreen/32/2110_2.png) [@JackPGreen](https://discourse.hibernate.org/u/JackPGreen)
#### Post date: [December 5, 2022, 9:40am UTC](https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981/2 "2022-12-05T09:40:28Z")

</div>

As per [java - Hibernate v5-\>v6 upgrade - poor SELECT performance - Stack Overflow](https://stackoverflow.com/a/74682684), it looks to be related to a resolved, but yet to be released, bugs:

- [HHH-15133](https://hibernate.atlassian.net/browse/HHH-15133)
- [HHH-15719](https://hibernate.atlassian.net/browse/HHH-15719)
- [HHH-15479](https://hibernate.atlassian.net/browse/HHH-15479)

---

<div class="post-metadata">

### Author: ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)
#### Post date: [December 5, 2022, 3:29pm UTC](https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981/3 "2022-12-05T15:29:11Z")

</div>

You are right, there were some issues that have now been fixed. Version 6.1.6 will be released this week, then you can tell us your updated numbers.

---

<div class="post-metadata">

### Author: ![JackPGreen](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jackpgreen/32/2110_2.png) [@JackPGreen](https://discourse.hibernate.org/u/JackPGreen)
#### Post date: [December 10, 2022, 9:37pm UTC](https://discourse.hibernate.org/t/hibernate-v5-v6-upgrade-poor-query-performance/6981/4 "2022-12-10T21:37:46Z")

</div>

Just benchmarked it again in Hibernate v6.1.5 @ 37 seconds, v6.1.6 @ 3 seconds.
