Al crear consultas con nombre en JPA, ¿existe una mejor práctica aceptada por los nombres de estas consultas y también es bueno para declarar estas consultas con nombre en las clases de entidad que (por ejemplo EntityName.allActive
o findAllActiveFoos
etc.). preguntan o todos juntos en una clase de utilidad?NamedQuery: Mejores prácticas
Respuesta
No, no existe una mejor práctica ampliamente aceptada que cubra casos complejos. Además, en general, no hay demasiadas guías de estilo disponibles para JPA. Lo que parece ser comúnmente aceptado, y en general también usado en libros, es comenzar la consulta con el nombre de la entidad.
Iría por EntityName (para garantizar nombres únicos en la unidad de persistencia) combinado con la operación y los argumentos.
- Person.findByAge
- Person.findByAgeAndFirstName
- Person.removeByFirstName
- Person.updateSalaryIfYearBornBefore
Así como una nota, la especificación utiliza with
en lugar de by
en los ejemplos, y no lo hace consulta de prefijo con el nombre de la entidad. Pero eso es, por supuesto, especificación, no guía de estilo.
me resulta bueno para declarar constantes para estos nombres de consulta y luego utilizar estas constantes en ambas @ NamedQuery.name y em.createNamedQuery.
Como @NamedQuery, @NamedNativeQuery y @NamedQueries solo se pueden aplicar a la superclase o entidad asignada, no puede ubicarlas en la clase de utilidad.
Creo que 'Entity.camelCaseWhatItDoesName' prácticamente califica como una buena práctica. En proyectos anteriores, varios clientes han adoptado este estilo. – Kawu
Aunque no parece haber una mejor práctica aceptada a nivel mundial, el libro "Pro JPA 2" de Mike Keith y Merrick Shincariol recomienda exactamente lo que dijo Mikko, p. si tiene una consulta para encontrar todos los empleados, llámelo "Employee.findAll".
Ito donde declarar esto, una vez más, no hay una mejor práctica real de lo que puedo ver. Parecen inclinarse a favor de declararlos en la Entidad misma en lugar de en una gran clase (como una BaseSuperclass base a partir de la cual se extienden todas sus entidades), ya que rápidamente se volvería monolítica y podría ser un poco difícil de mantener. Otra opción es declararlos en un archivo XML separado, no es que lo recomiende. Personalmente, me gusta el enfoque donde se declaran en la Entidad con la que están relacionados. También estoy de acuerdo con la sugerencia de Miko de usar constantes para el nombre, podrías simplemente definir todas estas constantes en una clase separada.
como un lado, una mejor práctica que es muy recomendable para consultas con nombre es usar parámetros con nombre en lugar de parámetros posicionales. Esto hace que las consultas sean mucho más fáciles de trabajar. – brent777
- 1. UITableView Mejores prácticas
- 2. Java enumeración mejores prácticas
- 3. Mejores prácticas de NAnt
- 4. mejores prácticas de ctags
- 5. Mejores prácticas de CoreData
- 6. Mejores prácticas de LDAP
- 7. Integración continua: mejores prácticas
- 8. Mejores prácticas de PyLint?
- 9. CONEXIÓN SQL mejores prácticas
- 10. ¿Mejores prácticas de Flex?
- 11. DTO: mejores prácticas
- 12. Mejores prácticas de Lucene.Net
- 13. NSDateFormatter compartido: ¿mejores prácticas?
- 14. Android strings.xml ¿Mejores prácticas?
- 15. Node.js + mejores prácticas repetitivo
- 16. Mejores prácticas de ActionListener
- 17. Mejores prácticas de Maven
- 18. Mejores prácticas de Sitecore
- 19. CSS Esquema mejores prácticas
- 20. ¿Mejores prácticas de PHP?
- 21. Mejores prácticas de transacciones
- 22. Mejores prácticas para C#
- 23. Selenium, Nunit ¿Mejores prácticas?
- 24. Mejores prácticas de Javascript
- 25. GWT Mejores prácticas compuestas
- 26. DataReader mejores prácticas
- 27. php y mysql, mejores prácticas
- 28. ¿Mejores prácticas de búsqueda inversa?
- 29. Guía de mejores prácticas: Swing
- 30. Mejores prácticas de Eclipse Workspace
Respuesta relacionada: http://stackoverflow.com/a/4948333/1725096 –