Связывание параметров со статистикой Hibernate SessionFactory - PullRequest
1 голос
/ 11 августа 2011

Вот выдержка:

    this.sessionFactory.getStatistics().setStatisticsEnabled(true);

..

    final Map<String, Object> customParams =  new HashMap<String, Object>();
    customParams.put("active", true);
    genericDao.getModifiedDate("getModifiedDateForAllActiveTestObjects", customParams);
    String[] queries = this.sessionFactory.getStatistics().getQueries();

Это дает мне запрос как:

SELECT max(test.modifiedDate) FROM GenericDomain AS test where test.active= :active

Этот код фактически находится в моих модульных / интеграционных тестах, и я хочу знать, действительно ли произошло связывание параметров, т. Е. Предложение where в окончательном SQL-запросе к заражению БД содержит test.active = true.

Это вообще возможно? Если нет, то как еще я могу получить эту информацию?

1 Ответ

0 голосов
/ 11 августа 2011

не уверен, что это лучший способ, но я использовал его в одном из моих проектов (C #).Я реализовал собственный app4 log4net, который ловит отправку sql NH на БД.

Конфигурация

var sqlLogger = (Logger)LogManager.GetRepository().GetLogger("NHibernate.SQL");
m_sqlappender = new NhSqlAppender(10);  // size of the ring-buffer
sqlLogger.AddAppender(m_sqlappender);
if (!sqlLogger.IsEnabledFor(Level.Debug))
    sqlLogger.Level = Level.Debug;

Использование

string[] queries = m_sqlappender.CurrentQueries.Pop();

CurrentQueries реализован как кольцевой буфертак что я могу получить последние запросы

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