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

时间:2018-05-15 12:28:08

标签: hibernate jpa jpa-2.0

我正在使用常量来组织我的@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需要编译查询时,这会导致任何性能问题吗?还有更好的推荐吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

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