ВведениеКак я могу получить данные из таблицы, у которой нет модели?
Я работаю над проектом, и я противостоял странный случай использования, что может быть ActiveJDBC не предназначен для, я обязуюсь терпения, потому что многие вещи в этом проекте не в моей власти:
У меня есть от 10 до 15 небольших/средних баз данных (~ 30 таблиц каждая, максимум 40000 записей), и большинство из них разделяют «основную» схему из 15 таблиц, но в то же время у них есть определенные таблицы, уникальные для каждой базы данных. все из которых поддерживаются унаследованными системами, к которым у меня нет доступа.
Цель
Мы (я и некоторые conrades) необходимо централизовать данные в своего рода «convolunted хранилища данных». К сожалению, по более высоким причинам я не могу использовать какие-либо технологии, отличные от ActiveJDBC, и все, что нужно написать нам (я знаю, что с MongoDB и/или Liquibase лучше справиться с этим)
Мы уже обрабатывали соединение между Базами данных, и сам проект идет хорошо для большей части. Часть программы, которая обрабатывает основную схему, которую все базы данных разделяют, уже «работает», но у нас возникают проблемы с их уникальными таблицами.
Я получаю все имена таблиц из баз данных из запроса, который выполняется во время выполнения (не мой выбор). Нам необходимо, чтобы число классов, как минимум, предпочтительно
Наконец мой вопрос
Могу ли я создать Generic/Динамическая модель или что-то подобное, что может содержать данные из запроса во время выполнения? что-то вроде:
Model a = Base.findall("select * from ?", TableName)
или
Model a = Model.fromTable(Tablename)
Я знаю, что это странно использовать модель, что путь, но это было бы упростить нашу жизнь так сильно, если бы мы могли получить данные Таблица таким образом.
Мы будем использовать эту модель в основном для получения «сырых» данных из таблиц и удовлетворения интерфейсов, поэтому не нужно беспокоиться о каждой связи таблицы прямо сейчас.
Спасибо заранее
@Edit: Спасибо Игорю за этот удивительный инструмент!
Мы вроде как сделали (почти)! Спасибо. Мы использовали подобный подход для «основной схемы», но вы немного дали нам немного света.
Как я заметил:
Мы должны использовать результаты Base.findall(), как это было модели, это было бы возможно?
Дополнительный вопрос на мини-вопрос: Можно ли каким-либо образом использовать «where(). Limit(). Offset()» с base.findall? Я знаю, что могу передать их непосредственно по запросу, но мне нужно отфильтровать объекты после того, как я получил результаты – LouizFC
, чтобы сделать это внутри базы данных, так как findAll() берет необработанный SQL-запрос: 'db.findAll (" выберите first_name "first_name" из списка пользователей по имени first_name limit 10 offset 50 ")' – ipolevoy
@LouizFC, спасибо за хорошее слово! К вашему другому вопросу: «Нам нужно использовать результаты Base.findall(), подобные модели, возможно ли это?». Результатами методов «Base # find» являются карты или списки карт. Ключи - это ваши выборки из вашей базы данных, а значения - все, что возвращает драйвер JDBC в соответствии с отображением вашей базы данных на типы Java. Таким образом, результаты Base не являются моделями. Однако, как я показал, вы можете легко преобразовать эти результаты в модели. – ipolevoy