Apache JDBC Utilts против шаблона SpringJDBC.Что лучше? - PullRequest
0 голосов
/ 17 марта 2019

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

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

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

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

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

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

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

@Overides

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

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

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

1 Ответ

1 голос
/ 17 марта 2019

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

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

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

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

...