Hibernate: как настроить Flush после каждой операции RW-D? - PullRequest
0 голосов
/ 20 января 2010

У меня есть AbstractDao, реализованный каждым Дао в моей базе данных.

открытый абстрактный класс AbstractDaoImpl расширяет HibernateDaoSupport {

(...) public void delete (T pEntity) выбрасывает FerdeDaoException {

    try {
        this.getHibernateTemplate().delete(pEntity);
    } (...)
}

....

Похоже, что flushMode работает в режиме AUTO.

Что я хочу?

Я хочу быть уверен, что когда этот класс используется в модульном тесте, Я хочу иметь сброс после каждой базовой операции (удаление, обновление, сохранение) с этим классом выше.

Что такое решение?

Я думаю, мне нужно добавить после строки: this.getHibernateTemplate (). delete (pEntity) в вышеуказанном методе

вот этот: this.getHibernateTemplate (). flush () только для моего модульного теста.

Но я не могу добавить его непосредственно в AsbtractDao, потому что он используется в другом проекте, где сброс будет выполняться автоматически.

Или мне нечего добавить, потому что режим сброса AUTO сбрасывается после каждой операции DELETE / SAVE / UPDATE ?? (Я не читал это в Javadoc).

Заранее спасибо за ваш ответ.

1 Ответ

0 голосов
/ 20 января 2010

Хороший:)

Почему вы не указываете системную переменную, которая определяет режим работы вашего приложения. например:

-DrunningMode = тест -DrunningMode = развитие -DrunningMode = производство

и на основе вашей системной переменной runningMode вы можете решить, что делать в AbstractDAO, или вы можете установить для свойства AUTO flush для тестирования значение true, а для сред без тестирования - false, а также использовать разные конфигурации при работе в разных режимы.

Если вы используете этот класс в разных проектах, может быть, лучше, чтобы вы подкрепили его файлом конфигурации, который проинструктирует этот класс, как работать. (XML или .properties)

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