我们现有的 Java 应用程序直接构建在 Spring Data/JPA/Hibernate 之上,用于数据访问。大多数情况下,对象由执行 JPQL 查询的 Spring Repositories 水合。当需要更多动态查询和排序时,我们也依赖 QueryDSL。Spring Data 可以很好地与 QueryDSL 配合使用,并且您使用 Spring Data 获得的所有漂亮的分页/排序继续正常工作。
我们目前正在将现有系统扩展到一些数据在数据库中而其他数据通过 RESTful 服务持久化的系统。出现的问题是在处理多个持久化数据源时如何有效地连接、过滤、排序和分页。来自一个源的数据可以通过其主键引用来自另一个源的数据,显然没有完整性约束。
我已经查看过诸如用于集合的 QueryDSL、Quaere、jaque、SBQL4J 和 lambdaj 之类的东西,但我的印象是来自所有数据源的所有数据都必须加载到内存中才能进行连接、过滤、排序和分页 -效率不高,尤其是对于网络应用程序。当然,可以通过 JPQL 过滤一些数据,例如,以稍微减少内存使用量,但这仍然有异味。
问:是否有任何可用的库可以优雅地处理这种异构数据源和技术的场景?