Я знаю, что Spring Data JPA использует Hibernate
Нет.Он использует JPA.Несмотря на то, что Hibernate является стандартной реализацией JPA Spring Boot и является самой популярной реализацией JPA, можно использовать любой механизм JPA.
Смогу ли я использовать другие функции Hibernate, такие как C3P0
C3P0 не имеет ничего общего с Hibernate.Это пул подключений.Вы можете использовать любой пул соединений, который вы хотите использовать как в Spring, так и в Hibernate.Spring Boot по умолчанию использует HikariCP, и я бы придерживался этого (это очень хороший пул).
Кэширование второго уровня Hibernate
Да.
или сеансы Hibernate, если я использую Spring Data JPA?
Нет действительно веской причины использовать старый проприетарный Hibernate Session API вместо использования стандартного JPA API,Если вам действительно нужно, я не понимаю, почему вы не можете использовать его, но я бы не стал (и никогда не должен был).
Каковы преимущества использования @Query для написанияпользовательские запросы по сравнению с использованием Hibernate-сессий и HQL?
Запрос требует HQL (точнее, JPQL) запроса.Если вы используете Query, вы используете HQL.Преимущество в том, что вам просто нужно объявить запрос.Spring связывает вас с привязкой параметров, выполнением запроса, поиском и т. д.Но вы можете использовать пользовательские реализации репозитория и использовать собственный API JPA, если вам нужно.
Есть ли разница в производительности между использованием методов запросов Spring Data JpaRepository и использованием Hibernate HQL?
Нет.