Почему Hibernate 4 может быть быстрее, чем JdbcTemplate? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть проект с Spring 4 и Hibernate 4 в качестве JPA.И у меня есть DAO-слой bean-компонента с методом, подобным:

@Transactional
public MyDtoObject getDataWithALotAggregation(String params){
 String queryStr = "select aLotAggregatedData from aLotJoinedTables where aLotParams="+params;
Object[] rawData = sessionFactory
  .getCurrentSession()
  .createSQLQuery(queryStr)
  .uniqueResult();
return mapRawDataToMyDtoObject(rawData);
}

, и я только что сравнил время этого метода с временем jdbcTemplate.queryForObject(queryStr, mapper, params), и я удивился, что Hibernate немного быстрее, чем JDBC API (~ 5-10%).

Есть идеи, почему Hibernate быстрее или JdbcTemplate такой медленный?

Я был уверен, что Hibernate, особенно с транзакциями, должен работать медленнее, чем JdbcTemplate ...

1 Ответ

1 голос
/ 21 июня 2019

Причина, по которой он медленнее всего, потому что запрос, сгенерированный hibernate, отличается от вашего.

Я предполагаю, что в вашем коде есть .uniqueResult();, который проверяет наличие дублирующихся объектов. Чем больше набор данных, тем больше вы почувствуете его в своем случае. Однако это может быть количество отображаемых столбцов. Чем больше столбцов запрашивается, тем медленнее ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...