【问题标题】:Native Stored Proc v/s Hibernate本机存储过程与休眠
【发布时间】:2009-09-15 08:36:49
【问题描述】:

我是 Hibernate 的新手。

我正在研究云服务数据访问层。

目前我们使用 Hibernate 进行 OR 映射,并使用 Hibernate 注释作为数据访问层。但最近我被要求以这样一种方式实现休眠/数据访问层,即我的存储过程是在 HQL 中,我们可以在短时间内更改我们的数据库并移植我们的整个代码。

在这方面我能想到的最接近的方法是使用命名查询,其中存储过程位于 DB 端,而我的 hibernate 正在使用命名查询解析存储过程调用。

所有这一切的原因在于,由于存储过程是预编译的,因此它们为大型云服务实现提供了良好的性能和安全优化。

目前我正在使用 java、hibernate 和 Mysql。

任何人都可以检查我的假设并验证或给出/建议一些更好的选择。

性能和安全性是重中之重。

【问题讨论】:

标签: java mysql hibernate stored-procedures


【解决方案1】:

我认为您概述的方法很棒。

如果我处于你的位置,这正是我会做的。 (我也在使用由 MySql 支持的 Hibernate,并且出于性能原因考虑过这样做。)

【讨论】:

    【解决方案2】:

    由于大多数 DBMS 解析和优化语句都很快,如果我的应用程序是目录的“所有者”,我不喜欢使用存储过程。

    使用存储过程,迁移和维护可能会变得更加困难,这超过了微小的性能利润。

    案例,我看到了存储过程的好处:

    • 我不是数据库的所有者。对数据的访问由数据库开发人员/维护人员提供(就像您经常在数据仓库中找到的那样)。所以存储过程是数据的接口。
    • 语句很复杂,运行时不可预测或对我的应用程序没有影响(例如触发长时间运行的事务或批处理)。

    希望这会帮助您做出决定。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 2018-06-18
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多