Native Stored Proc v / s Hibernate

时间:2009-09-15 08:36:50

标签: java mysql hibernate stored-procedures

我是Hibernate的新手。

我正在开发云服务数据访问层。

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

我认为最接近的是使用命名查询,其中存储过程位于数据库端,而我的hibernate使用命名查询解析存储过程调用。

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

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

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

性能和安全性是首要任务。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

通过存储过程,迁移和维护可能变得更加困难,从而超过了微小的性能利润。

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

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

希望,这会帮助你做出决定。