Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在不生成查询类型的情况下使用Querydsl?_Java_Nosql_Persistence_Jpa 2.0_Querydsl - Fatal编程技术网

Java 是否可以在不生成查询类型的情况下使用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的方法可以按所述方

例如,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的目标不是提供任何持久性抽象,这是主要原因,主要目标是为持久性查询提供类型安全的一致语法。