При использовании jdbctemplate с пружиной, должен ли я иметь базовый класс? - PullRequest
0 голосов
/ 26 ноября 2011

Весной я перехожу из режима гибернации к jdbctemplate, и мне нужны некоторые указания.

Я собираюсь создать UserDao, а затем UserDaoImpl.

В моемФайл servlet.xml Я создал свой компонент источника данных.

Сейчас я читаю это: http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html

Он говорит, что у него есть приватный метод:

private JdbcTemplate jdbcTemplate;

Итак, могу ли я создать свой UserDaoImpl следующим образом:

public class UserDaoImpl implements UserDao {
   private JdbcTemplate jdbcTemplate;

   public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}

}
  1. Нужен ли мне там установленный источник данных?Или я могу использовать какую-то аннотацию?
  2. Могу ли я переместить этот код в базовый класс, такой как GenericDao / GenericDaoImpl?(если это так, могу ли я сохранить jdbcTempalte как частную или защищенную?

С помощью hibernate я смог добавить базовые запросы в свой базовый класс с использованием обобщенных шаблонов, полагаю, я не могу сделать это с помощьюjdbc, поскольку на самом деле ничего не отображается на мои сущности правильно?

update

Итак, мой GenericDaoImpl выглядит так:

public class GenericDaoImpl<T> extends JdbcDaoSupport implements GenericDao<T> {

    private JdbcTemplate jdbcTemplate;

 }

Тогда мой UserDaoImpl выглядит следующим образом:

@Repository
public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {

}
  1. Я не могу сейчас использовать this.jdbcTemplate в своих методах? Что мне делать?
  2. В моем GenericDaoImpl у меня может быть setDataSource, так как он помечен как финальныйот JdbcDaoSupport.
    Как мне autowire источник данных сейчас?

1 Ответ

4 голосов
/ 26 ноября 2011

Предполагая, что вы используете Spring 3, источник данных может быть внедрен в родительский класс DAO с использованием конфигурации XML или аннотаций.В XML «дочерние» bean-компоненты могут использовать ключевое слово extends для использования dataSource.

суперкласса. JdbcDaoSupport class - это небольшой служебный класс, который объединяет некоторые общие функции.как свойства dataSource и jdbcTemplate (и некоторые другие).Это всего лишь один из тех маленьких удобных классов, которые люди все равно создают для себя, поэтому он предоставляется вместо этого.

Используйте getDataSource() для извлечения источника данных.Вам не нужно нужно a setDataSource(), в JdbcDaoSupport есть еще один;что бы вы сделали по-другому?Если вам действительно нужен 1018 *, то вы, вероятно, не хотите использовать JdbcDaoSupport.Относительно необычно нуждаться в чем-то кроме простого геттера / сеттера.

...