常量作为 NamedQueries 中的参数是一个好习惯吗?

Constants as parameter in NamedQueries is it a good practice?

我正在使用常量来组织我的 @NamedQueries,但我对参数有疑问,使用常量作为参数也是一种好习惯吗?

例如,在整个应用程序中,我的 NamedQueries 按公司 ID 筛选。所以我创建了:

public static final String PARAM_EMPRESA_ID = "empresaId";

我是这样使用的:

@NamedQuery(name = EmbalagemAbaSuperiorTipo.QUERY_FETCH_BY_EMPRESA,
            query = "SELECT ep FROM EmbalagemAbaSuperiorTipo ep WHERE ep.empresa.id = :" + AppController.PARAM_EMPRESA_ID + " ORDER BY ep.descricao")

当 Hibernate 需要编译查询时,这会导致任何性能问题吗?还有更好的推荐吗?

提前致谢

从 Hibernate 的角度来看,@NamedQuery 注释在 Hibernate 启动时被解析。所以你不应该看到任何运行时性能问题。这也是减少开发人员错误的好方法,因为您使用的是编译时常量而不是字符串,我在过去的经验中使用过并发现它很有用。