Re[3]: Автоматизация запросов (парсер)
От: andyJB  
Дата: 28.12.05 17:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Den Raskovalov, Вы писали:


DR>>Курим слово ORM. Hibernate, NHibernate для примера.

А>В смысле?
В поставленной задаче есть несколько подзадач:
1. Разбор входящего запроса (парсер).
2. Анализ запроса (здесь предложили курить ORM).
3. Генерация измененного запроса (кодогенерация).
1.Парсим:
— если вид запросов предопределен, то можно посмотреть в сторону использования RegExp.
— если произвольный, то либо ищем стандартный SQL парсер от производителя DB (не найдется, наверное), либо, что будет лучше для данной ситуации, пишем свой, например, рекурсивным спуском.
Разбираемся с промежуточным представлением, которое будет порождать парсер:
— модификации запросов простые, фиксирован вид модификаций или схема базы; обходимся без промежуточного представления. Делаем текстовые замены.
— модификации сложные, схема базы не фиксированная — на 1 этапе создаем промежуточное представление.
2. Как доступна информация о схеме базы? Насколько критична скорость?
— если схема базы произвольная, скорость некритична, можно использовать ORM; в качестве промежуточного представления можно использовать те же классы;
— иначе пишем свой модификатор внутреннего представления, как-то снабжая его информацией о схеме базы;
3. Генерация измененного запроса. Тут должно быть все понятно.
Содержательным пунктом видится только 2, поэтому про него и отвечали.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.