用于构造条件SQL语句的设计模式

时间:2012-09-05 15:56:23

标签: java oracle design-patterns

我有一个问题。

我有SQL,我需要附加不同类型的“限制”,甚至做一个连接。这取决于用户的搜索条件。

这个SQL会涉及不同的表,因为它可以搜索一对多的关系,因此hibernate ORM不能支持我的要求。

我是否知道是否有设计模式来帮助构建此类SQL语句?

2 个答案:

答案 0 :(得分:0)

我确实有类似的要求,我有一个无上下文的语言来定义搜索条件,解析为ParseEntry中与ParseTree类似的Restrictions个对象。我使用SQLQueryGeneratorVisitor访问解析表并生成SQL查询,类似于HibernateCriteriaGeneratorVisitor,如果需要为单个实体生成标准。所以,我基本上使用Visitor模式使得解析树和条目可访问,以便可以生成不同类型的条件(SQL / Hibernate或将来的其他东西)。

答案 1 :(得分:0)

适合表示语言陈述问题的设计模式是Interpreter pattern。但在开始编写SQL解析器代码之前,请先查看ANTLR。 更重要的是,问自己两个问题:

  1. 不同SQL的数量是否证明了开发一般SQL解释器解决方案的努力,而不是编程(只是if-else语句)我的5-10个不同的查询?
  2. 我是否详细阅读了Hibernate参考手册?