我正在开发一个使用Struts 1.3.8 + EJB 2.1的项目。在EJB BMP中实现高级查找(筛选)的常见做法是什么?
我有几个导航jsp的(有一些表包含实体)。在导航菜单中,用户可以为每个表格列选择一个过滤条件。他在下拉列表中选择过滤器运算符并输入条件值。
列具有不同的类型,包括字符串,数据,等等整数
现在我使用一个简单的条件的类,它incapsulates三个值(列名,操作员和的值)。
在action servlet中,我通过调用Finder方法将sendind条件转换为相应的EntityBean。
搜索方法使用的QueryBuilder类,其产生的SQL查询(实际上它只是增加了那里的条件和验证数据)。
我不喜欢这个方案有几个原因。
首先,它在QueryBuilder中使用原始SQL,因此我必须实施数据验证以防止SQL注入。
其次表现层和业务层成为高耦合(演示文稿必须使用DB知道列名或QueryBuilder的必须使用演示知道列名)。
我只能使用EJB 2.1版本,而实体bean必须是BMP。
我想知道是否有一些很好的做法来实现上述机制,或只是看到一些有关我的问题的建议。
谢谢你的帮助。