Gra*_*Lea 6 performance hibernate hql named
一位新同事刚刚建议在Hibernate中使用带注释的命名HQL查询(即@NamedQuery),而不是在我们的XxxxRepository类中嵌入HQL.
我想知道的是,除了集中查询之外,使用注释是否提供了任何优势?
特别是,是否有一些性能增益,例如,因为查询仅在加载类时解析一次,而不是每次执行Repository方法时?
来自Pro EJB 3(Mike Keith):
"...我们建议尽可能使用命名查询.持久性提供程序通常会采取措施将JPQL命名查询预编译为SQL,作为应用程序部署或初始化阶段的一部分."
虽然本书是关于JPA的,但一般建议适用于Hibernate.但是,由于Hibernate缓存已解析的HQL/JPQL,您可能不会看到很大的性能提升.使用命名查询的另一个好处是,它为您提供了在部署时使用映射文件覆盖查询的选项,而无需重建您的应用程序; 如果您需要在生产中调整查询,则非常有用.
除了可能的性能提升之外,我相信另一个优势是通过使用带注释的HQL查询,您可以保护自己免受SQL注入攻击.
对于Web应用程序,如果查询包含任何用户输入数据,这一点很重要.
http://en.wikipedia.org/wiki/SQL_injection
归档时间: |
|
查看次数: |
3843 次 |
最近记录: |