Хотите сделать слой db универсальным и не привязанным к JdbcDaoSupport весны - PullRequest
0 голосов
/ 01 апреля 2012

Текущий У меня есть отдельный модуль maven для доступа к базе данных, все мои классы DAO наследуются от:

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

Мой модуль maven имеет пружинную зависимость:

org.springframework spring-orm

Так чтоТипичный класс Dao выглядит следующим образом:

public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {

    @Override
    public void insert(User user) {
        getJdbcTemplate().update("insert into users(...)...");
    }
}

Мой Dao автоматически подключается с bean-компонентом dataSource.

Можно ли как-то сделать этот универсальный шаблон, чтобы я мог продолжать использовать его в своем весеннем MVCприложение, но оно будет работать, если мне понадобится использовать эту библиотеку в среде типа службы заданий cron? (без необходимости вписывать контекст приложения Spring в рисунок).

1 Ответ

1 голос
/ 01 апреля 2012

Я бы начал наблюдать следующее:

  • У вас есть GenericDao<T>, что означает, что вы можете иметь различные реализации.
  • В настоящее время у вас есть GenericDaoImpl<T> extends JdbcDaoSupport, которыйозначает, что вы не можете использовать в другой среде, которую вы описали, без какого-либо контекста приложения, если вы не подготовите все объекты вручную.

Поэтому я предлагаю следующее:

  • РазрешитьGenericDao<T> extends org.springframework.jdbc.core.JdbcOperations
  • Разработка AbstractGenericDao<T> implements GenericDao<T> для предоставления необходимой абстрактной общей функциональности.
  • Разработка MyEnvGenericDao<T> extends AbstractGenericDao<T>, отвечающей за предоставление источника данных и лежащего в основереализация различных методов, которые вам нужны;может использовать прямую реализацию Hibernate / OpenJPA для непосредственного выполнения запросов.
  • Разработайте SpringGenericDao<T> extends JdbcDaoSupport implements GenericDao<T>, который уже поставляется с getJdbcTemplate() для выполнения необходимых операций и делегирован шаблону Spring JDBC.В этом сценарии вам необходимо делегировать операции для JdbcDaoSupport.getJdbcTemplate().

, относящихся к Maven, тогда вы можете иметь разные модули для реализаций MyEnv и Spring, но оба с одним родителем дляиметь доступ к GenericDao<T> интерфейсу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...