Apache JDBC Utilts против шаблона SpringJDBC. Что лучше?

Я обсуждал себя, использовать ли jdbcTemplate против apache DBUtils в моем проекте. Мое приложение представляет собой весеннее приложение, в котором мы используем jdbcTemplate для нескольких запросов. Но я думал об этом очень легком и простом для понимания Apache DbUtils.

Я знаю, что и jdbcTemplate, и dbutils являются уровнем абстракции поверх обычного JDBC, что помогает нам избежать кода бройлерной пластины.

Итак, мои вопросы:

1) Есть веская причина, по которой я должен убедить себя перенести все с jdbcTemplate на dbutils?

2) Любые автосопоставители POJO в jdbcTemplate, которые автоматически сопоставляются с классом java POJO? Я знаю, что в DbUtils мы можем сделать это, как показано ниже:

ResultSetHandler<List<Object>> beanListHandler = new BeanListHandler<Object>(Object.class, new BasicRowProcessor(new GenerousBeanProcessor())); я

Я знаю, что в jdbcTemplate у нас может быть собственный rowMapper, где мы можем явно установить свойства, как показано ниже, но есть ли способ сделать автоматическое сопоставление с POJOS, как в dbutils?

@Overides

public Object mapRow(){
     //set to Object by calling setters
}

3) Будет ли иметь какое-либо значение производительность при использовании dbutils? (Поскольку мы уже используем jdbcTemplate в других запросах)

Может ли кто-нибудь предложить лучший выбор из этих двух и почему из вашего опыта?

JdbcTemplate включает обычные сопоставления POJO по умолчанию; это цель всех тех подписей, которые принимают Class в качестве параметра.

chrylis -cautiouslyoptimistic- 17.03.2019 03:52

@chrylis Спасибо, посмотрю. есть предложения по другим пунктам?

ging 17.03.2019 03:58

Stack Overflow предназначен для того, чтобы избежать многословных или открытых дискуссий. Этот вопрос, кажется, движется в этом направлении. Либо переформулируйте это как конкретную техническую проблему, которую необходимо решить, либо переместите ее на дочерний сайт Stack Overflow на русском, где вы переформулируете вопрос как список потребностей и критериев, по которым вы будете рассматривать предлагаемый продукт для успешного удовлетворения этих потребностей. Вопросы о сравнении продукта X с продуктом Y не относятся к теме на обоих сайтах. Итак, третье направление — дискуссионный сайт, такой как JavaRanch.com.

Basil Bourque 17.03.2019 05:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
573
1

Ответы 1

Если ваше приложение использует среду Spring, вам следует придерживаться JdbcTemplate. Работая в тандеме со средой Spring, он предлагает множество преимуществ, некоторые из ключевых из них:

  • Жизненный цикл, управляемый контейнером
  • Хорошо сочетается с поддерживаемым Spring шаблоном проектирования DAO.
  • Управление транзакциями Spring

и не забывайте, что в Интернете доступно множество материалов для этой комбинации, если вы застрянете в какой-либо точке и попытаетесь найти указатели.

Что вы можете сделать, чтобы уменьшить количество шаблонов вокруг извлечения данных (из ResultSet) и создания POJO, так это написать несколько общих реализаций RowMapper (или ResultSetExtractor). Реализация должна исследовать ResultsetMetadata, чтобы определить имена столбцов и типы возвращаемых записей, а также с помощью отражения класса (объект, который должен возвращать RowMapper) сопоставить их с полями или сеттерами, создать экземпляр, заполнить и вернуть объект.

Другие вопросы по теме