Я занимаюсь разработкой проекта с использованием Struts 1.3.8 + EJB 2.1.
У меня есть несколько навигационных jsp (есть какие-то таблицы, содержащие сущности).В меню навигации пользователь может выбрать условие фильтра для каждого столбца таблицы.Он выбирает оператор фильтра в раскрывающемся списке и вводит значение условия.
Столбцы имеют разные типы, включая строку, данные, целое число и т. Д.
Теперь я использую простой класс Condition, которыйинкапсулирует три значения (имя столбца, оператор и значение).
В сервлете действия я отправляю условия в соответствующий EntityBean, вызывая метод Finder.
Метод Finder использует класс QueryBuilder, который генерируетЗапрос SQL (практически он просто добавляет условия WHERE и проверяет данные).
Мне не нравится эта схема по нескольким причинам.
Во-первых, он использует сырой SQL в QueryBuilder, поэтому я должен реализовать проверку данных, чтобы предотвратить внедрение SQL.
Во-вторых, уровни представления и бизнес-уровни стали сильно связанными (презентация должна знать имена столбцов, используемые в БД, илиQueryBuilder должен знать имена столбцов, используемые в презентации).
Я могу использовать только версию EJB 2.1, а бины сущностей должны быть BMP.
Я хочу знать, есть ли какая-то хорошая практика для реализации вышемеханизм, или просто посмотреть некоторые полезные предложения по моей проблеме.
Спасибо за помощь.