Я делаю обновление до существующей системы, в которой работает postgres.
предыдущий архитектор считал, что лучший способ добиться улучшения производительности системы - это после каждого года перемещать данные предыдущих лет в новую схему в базе данных, а не просто индексировать основную схему. (серьезно, нулевые индексы, 9 одинаковых схем).
теперь для проблемы. Я удалил безумную логику соединения с базой данных, которую они использовали (похоже, они пытались создать менеджер транзакций с нуля) и заменил ее на Spring Transactions. так что теперь я вынужден иметь дело с такими циклами:
for(archive a : yearsArchived){
session s = sessionfactorymap.get(a).getcurrentsession();
(find data and copy to temporary table for report)
}
Я могу достаточно легко создавать различные фабрики сеансов для разных схем, проблема в том, чтобы связать их с менеджером транзакций, чтобы они могли открыть сеанс. когда я все конвертирую, я получаю это исключение:
org.hibernate.HibernateException: No CurrentSessionContext configured!
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:685)
at parity.model.ReportThread.generate(ReportThread.java:47)
at parity.model.ReportThread.run(ReportThread.java:31)
(да, я знаю, это многопоточное веб-приложение, предыдущие разработчики были новичками)
в моих обычных классах весенних транзакций мне не нужно устанавливать контекст currentsession, потому что я предполагаю, что это сделано менеджером весенних транзакций. как в мире я могу исправить этот беспорядок?