在 JPA 中创建命名查询时,对于这些查询的名称是否有可接受的最佳实践(例如 EntityName.allActive
或 findAllActiveFoos
等)并且是否在它们查询的实体类中或在实用程序类中一起声明这些命名查询好吗?
最佳答案
不,没有涵盖任何复杂案例的广泛接受的最佳实践。同样,一般来说,没有太多可用于 JPA 的样式指南。似乎被普遍接受并且在书籍中也普遍使用的是从实体名称开始查询。
我会选择 EntityName(以保证持久性单元中的唯一名称)结合操作和参数。
- Person.findByAge
- Person.findByAgeAndFirstName
- Person.removeByFirstName
- Person.updateSalaryIfYearBornBefore
请注意,规范在示例中使用 with
而不是 by
,并且没有在查询前加上实体名称前缀。但这当然是规范,而不是风格指南。
我发现为这些查询名称声明常量然后在@NamedQuery.name 和 em.createNamedQuery 中使用这些常量很好。
因为@NamedQuery、@NamedNativeQuery 和@NamedQueries 只能应用于映射的父类(super class)或实体,您不能将它们定位到实用程序类。
关于java - 命名查询 : Best practices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10934957/