0

想不出好标题。

我正在创建一个库/工具包,用于在数据库中存储和搜索一种特殊类型的数据(与问题无关,但它是化学结构)。搜索功能返回一个化合物列表,其中化合物由一种或多种化学物质组成。

使用该工具包的开发人员可以使用它来创建多个存储化合物的应用程序。这个想法是所有应用程序都应该只有 1 个商店。例如,假设他创建了一个库存系统,其中每个容器都包含一种化合物。他还创建了一个用于存储生物测试结果的应用程序。我们现在有 2 个类(Container、BiologicalTestResult),它们包含一个 Compound 但 API 不知道。我想要的是在存储化合物时,API 应该能够存储它出现在哪些应用程序中。因此,在应用程序 A 中搜索时,仅返回应用程序 A 中实际存在的化合物。

此外,在搜索 API 时,应该能够按特定于该应用程序的数据进行过滤,例如。testResult =“失败”或剩余金额 > 100。

什么是实现这一目标的好方法?我认为最简单的解决方案是通过字符串连接构建 SQL 语句(具有相关的缺点)。这将消除工具包存储它所属的应用程序的需要。例子:

search(String searchTerm, String selectFields, String joinTable, Filter filter);

其中“selectFields”是从“joinTable”返回的字段,“joinTable”是包含复合表外键的应用程序表,过滤器是包含“where子句”的自定义类,例如将字段名称映射到条件(>,<, like, = ...) 和一个值。

这合理吗?更好的想法?

4

1 回答 1

0

答案是要有一个合适的领域模型,然后你就可以使用 QueryDSL。

于 2013-03-14T16:32:19.177 回答