Я хотел сравнить производительность данных Spring с JDBI. Я использовал следующие версии
Spring Boot 2.2.4.RELEASE
против
JDBI 3.13.0
. Тест довольно прост, выберите * из таблицы администратора и конвертируйте. к списку объектов администратора
приведены соответствующие данные
с пружинной загрузкой
public interface AdminService extends JpaRepository<Admin, Integer> {
}
и для JDBI
public List<Admin> getAdmins() {
String sql = "Select admin_id as adminId, username from admins";
Handle handle = null;
try {
handle = Sql2oConnection.getInstance().getJdbi().open();
return handle.createQuery(sql).mapToBean(Admin.class).list();
}catch(Exception ex) {
log.error("Could not select admins from admins: {}", ex.getMessage(), ex );
return null;
} finally {
handle.close();
}
}
тестовый класс выполняется с использованием junit 5
@Test
@DisplayName("How long does it take to run 1000 queries")
public void loadAdminTable() {
System.out.println("Running load test");
Instant start = Instant.now();
for(int i= 0;i<1000;i++) {
adminService.getAdmins(); // for spring its findAll()
for(Admin admin: admins) {
if(admin.getAdminId() == 654) {
System.out.println("just to simulate work with the data");
}
}
}
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
System.out.println("Total duration: " + duration.getSeconds());
}
Я был шокирован, получив следующие результаты
Spring Data: 2 секунды JDBI: 59 секунд
любая идея, почему я получил эти Результаты? я ожидал, что JDBI будет быстрее