java - 命名查询 : Best practices

标签 java jpa naming-conventions

在 JPA 中创建命名查询时,对于这些查询的名称是否有可接受的最佳实践(例如 EntityName.allActivefindAllActiveFoos 等)并且是否在它们查询的实体类中或在实用程序类中一起声明这些命名查询好吗?

最佳答案

不,没有涵盖任何复杂案例的广泛接受的最佳实践。同样,一般来说,没有太多可用于 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/

相关文章:

java - 使用Java访问类路径中特定文件夹中的文件

java - 我可以使用对象的 vector 来存储扩展该对象的多种类型的对象吗

ruby-on-rails - HTML 表单命名约定的名称

naming-conventions - 命名约定 : "State" versus "Status"

JPA EntityManager 为什么merge() 不管理实例?

ios - 如果属性名为 swipeDirection,为什么 self.SwipeDirection 可以工作?

java - 根据值(value)锁定/解锁?

java - 当调用 void 方法时,如何使用 PowerMock/PowerMockito/Mockito 抛出异常?

java - Spring Data JPA + Hibernate + PostgreSQL

java - Spring Data JPA save() 方法不遵循 hashcode/equals 约定