На вопрос, что быстрее, невозможно ответить без указания конкретного варианта использования.
JdbcTemplate
, скорее всего, будет быстрее, когда речь идет о чистом выполнении запросов, потому что реализация JPA будет делать больше:
- Разобрать JPQL (при условии, что вы его используете)
- создание SQL-запроса из этого
- выполнение его
- преобразование результата в объекты
В то время как шаблон будет (почти) просто:
- выполнить запрос
- передать вам результат как вызов
ResultSetMapper
или аналогичный.
Конечно, JPA делает все это не просто так.
- он предлагает разумную степень независимости базы данных.
- он отслеживает ваши изменения и генерирует правильные операторы обновления для их сохранения.
- он допускает ленивую загрузку, поэтому вам не нужно думать о том, что загружать заранее (конечно, вам все равно придется это делать, если вы заботитесь о производительности).
И эти вещи имеют затраты помимо производительности.
Абстракция, которую предлагает JPA, на самом деле очень сложна и негерметична, и большинство разработчиков, использующих ее, не понимает ее должным образом. Хотя я считаю, что во многих случаях использование JPA вполне разумно, я также могу относиться к людям, запрещающим его использование в своих проектах. Разговоры о производительности абсолютно слишком ограничены, чтобы принимать взвешенное решение по этому поводу.
person
Jens Schauder
schedule
06.11.2019