В отчетах Pentaho connectionFactory добавлен новый метод, но нет описания - PullRequest
0 голосов
/ 14 сентября 2011

В моем веб-приложении выполняется обновление отчетов о пентахо с 3.6.1 до 3.8.0.Когда я обновил все необходимые файлы JAR, я получил одну ошибку компиляции в одном из моих классов, который реализует ConnectionProvider.ниже мой класс.

public class DataSourceConnectionProvider implements ConnectionProvider
{

....

}

Ошибка говорит о том, что мой класс должен реализовывать метод getConnectionHash(), как это определено в интерфейсе ConnectionProvider.но его не было в версии 3.6.1.поэтому я немного растерялся, почему они добавили его и как реализовать в моем классе.

1 Ответ

0 голосов
/ 15 сентября 2011

Этот метод возвращает объект, который является сопоставимым и хешируемым и используется во время кэширования источников данных. Это позволяет нам создавать какие-то ключи для обнаружения изменений в определении соединения, в то время как многие отчеты выполняются в одной и той же JVM.

Сама реализация кеша не знает никаких деталей о различных источниках данных, и «ConnectionHash» позволяет нам сохранять отдельные наборы результатов.

Моя базовая реализация просто возвращает ArrayList со всеми соответствующими свойствами соединения, добавленными к нему.

Простой пример того, как и где это необходимо:

Представьте, что у вас есть источник данных JDBC, который подключается к базе данных, где существует несколько схем с одинаковыми структурами таблиц, например, в мультитенантной среде, где у каждого арендатора есть своя собственная схема.

С помощью запроса типа «ВЫБРАТЬ * ОТ КЛИЕНТОВ, ГДЕ СТРАНА = $ {страна-параметр}» источник данных будет возвращать различные наборы данных, в зависимости от того, какой запрос выполняет клиент. Сумма «connection-hash», «query-name» и «parameter, используемого в запросе» теперь образует уникальный идентификатор, который мы можем использовать для хранения и последующего поиска набора результатов из кэша.

...