使用静态导入和使用 QueryDSL 创建新的 q 类型实例有什么区别?
What is the difference in use static import and create new q-type instance using QueryDSL?
我在生产代码行中看到这样的:
public Info findById(final long id){
QInfo info = QInfo.info;
JPAQuery query = newJpaQuery().from(info);
.....
}
另一方面:
import static com.example.system.app.entities.QApplication.application;
public Application findById(final long id){
return newJpaQuery().from(application).where(application.applicationId.eq(id)).uniqueResult(application);
}
使用静态导入和为每个方法创建 Q 实例有什么区别?其根源是否来自一些线程安全的观察?
Q 实例是线程安全的,但有时您需要在同一类型的查询中使用多个变量。
一般情况下,如果每种类型只需要一个变量,默认变量就足够了,如果需要更多,则需要创建额外的变量。
这些附加变量可以按查询创建或作为常量创建。
例如
QInfo info = QInfo.info; // default variable
QInfo info2 = new QInfo("info2"); // extra variable
newJpaQuery().from(info).innerJoin(info.path, info2).where(...)
我在生产代码行中看到这样的:
public Info findById(final long id){
QInfo info = QInfo.info;
JPAQuery query = newJpaQuery().from(info);
.....
}
另一方面:
import static com.example.system.app.entities.QApplication.application;
public Application findById(final long id){
return newJpaQuery().from(application).where(application.applicationId.eq(id)).uniqueResult(application);
}
使用静态导入和为每个方法创建 Q 实例有什么区别?其根源是否来自一些线程安全的观察?
Q 实例是线程安全的,但有时您需要在同一类型的查询中使用多个变量。
一般情况下,如果每种类型只需要一个变量,默认变量就足够了,如果需要更多,则需要创建额外的变量。
这些附加变量可以按查询创建或作为常量创建。
例如
QInfo info = QInfo.info; // default variable
QInfo info2 = new QInfo("info2"); // extra variable
newJpaQuery().from(info).innerJoin(info.path, info2).where(...)