为什么在休眠项目中,存储过程比休眠JPQL查询要好?

时间:2019-05-28 17:20:30

标签: java hibernate jpa stored-procedures

我通过利用JPQL查询来使用Spring Boot和Hibernate项目 但有人告诉我存储过程更好。我的问题是存储过程是否最好,为什么还要使用JPQL和条件查询。

哪个是行业标准sp或JPQL查询

1 个答案:

答案 0 :(得分:1)

我不建议您选择其中一个作为首选。

我当然不会同时使用Hibernate和存储过程。你这样做能完成什么?

让我们回顾一下为什么要选择每一个:

  1. 可以将存储过程看作是使用户免于架构详细信息的接口。如果您维护相同的存储过程API,则可以在不影响客户端的情况下对基础架构进行更改。
  2. Hibernate是一种ORM解决方案,可让您生成将对象映射到表的SQL。

存储过程的缺点是您与该关系数据库供应商有联系。每个供应商都有自己的语言。您需要擅长编写该存储过程语言。如果不是,或者没有DBA支持,则存储过程可能不是一个好主意。

ORM允许您忘记正在处理关系数据库。您可以假装一切都是对象。大多数使用Hibernate的人来这里询问他们如何编写自定义查询。我一直想知道为什么他们选择了Hibernate。

如果对象模型和关系模式很简单,那么这两种方法都会增加您可能不需要的复杂性。

我将从一个具有手写ANSI SQL的关系模式和对象开始-供应商特定的SQL扩展。您已经在使用Spring。坚持简单的事情:使用Spring JdbcTemplate

仅在需要时承担存储过程和ORM的复杂性。