Java 是否可以在不生成查询类型的情况下使用Querydsl?
例如,JPA标准API可以在不生成元模型的情况下使用。类型安全性已丢失,但我可以在运行时仅使用反射创建查询,而无需事先了解数据模型。我想以同样的方式使用Querydsl。我不关心类型安全,因为我根本不知道数据模型 在我最近的项目中,我想使用Querydsl,主要是因为它构成了持久性之上的另一层。所以我希望可以在JPA、JDO、JDBC、Lucene、Hibernate搜索、MongoDB、Collections和RDFBean上使用相同的查询 或者是否有任何替代Querydsl的方法可以按所述方式使用Java 是否可以在不生成查询类型的情况下使用Querydsl?,java,nosql,persistence,jpa-2.0,querydsl,Java,Nosql,Persistence,Jpa 2.0,Querydsl,例如,JPA标准API可以在不生成元模型的情况下使用。类型安全性已丢失,但我可以在运行时仅使用反射创建查询,而无需事先了解数据模型。我想以同样的方式使用Querydsl。我不关心类型安全,因为我根本不知道数据模型 在我最近的项目中,我想使用Querydsl,主要是因为它构成了持久性之上的另一层。所以我希望可以在JPA、JDO、JDBC、Lucene、Hibernate搜索、MongoDB、Collections和RDFBean上使用相同的查询 或者是否有任何替代Querydsl的方法可以按所述方
因为NoSQL数据库正在上升。是否有其他框架在各种持久性提供程序上构成类似的抽象层?有两种方法可以在不生成元模型的情况下使用Querydsl 第一种方法是手动构造表达式 第二个是使用Querydsl的别名功能 Querydsl查询共享公共接口并且看起来很相似,但是您不能直接在不同的持久性类型上使用相同的查询,因为Querydsl不提供任何跨模块的查询抽象 查询的各个部分可以共享,例如谓词或投影,但查询绑定到某个模块
您可以做的是坚持使用一种常见的持久性抽象JPA或JDO,并通过它们使用RDBMS、OODB和NoSQL引擎。遗憾的是Querydsl没有提供对模块的这种抽象。这将是非常有益的,可以将Querydsl推到“java生态系统中的LINQ替代方案”。Querydsl不提供这种功能有什么特别的原因吗?为什么不同模块的查询不同?LINQ甚至提供了吗?Querydsl的目标不是提供任何持久性抽象,这是主要原因,主要目标是为持久性查询提供类型安全的一致语法。