hibernate vs ebean 作为可扩展的高性能 ORM

Posted

技术标签:

【中文标题】hibernate vs ebean 作为可扩展的高性能 ORM【英文标题】:hibernate vs ebean as scalable, performant ORM 【发布时间】:2014-06-19 19:24:08 【问题描述】:

我们将编写一个我们正在尝试评估技术堆栈的服务。因此,作为 ORM 的一部分,我们正在考虑使用 hibernate,但从我的一位同事那里我知道了 abt ebean。但是我们对ebean一无所知。

所以我的问题是:是否存在与休眠相关的任何缺点、任何可销售性或性能瓶颈? ebean 带来的优势是什么?

【问题讨论】:

【参考方案1】:

Ebean 带来了什么?

简而言之,Ebean 带来了一个更易于使用且最重要的是优化的全功能 ORM(嗯,它很简单,但也可以通过分析自动完成)。

一种查询语言,旨在通过对部分对象的良好支持以及内置避免 N + 1

一个“无会话”ORM ...架构为没有附加/分离语义(因此这使得它更易于使用/快速掌握)。

Ebean 现在具有 SQL2011 History 支持和 ElasticSearch 集成。你可以说 Hibernate 有类似的功能。

参考链接:

弹性搜索 http://ebean-orm.github.io/docs/features/elasticsearch/ 自动查询调优 http://ebean-orm.github.io/docs/query/autotune N + 1 http://ebean-orm.github.io/docs/query/nplus1

【讨论】:

【参考方案2】:

在大型且可扩展的应用程序中,hibernate 以及基本上任何 JPA 实现都存在很多问题。您应该考虑使用另一种解决方案。文章 Large Application Model issues 中对问题进行了很好的描述,而文章 Model for large applications 中的模型应该是什么样子。

【讨论】:

【参考方案3】:

如前所述,Ebean 是无会话 ORM,因此您无需考虑会话。 Hibernate 具有无法禁用的一级缓存。也就是说,如果你通过ORM查询item,然后用SQL直接删除它,它就留在缓存中。您可以显式清除缓存以从数据库中获取最新结果,但不幸的是,这种行为可能会带来诸如“传递给持久化的分离实体”之类的错误。

【讨论】:

以上是关于hibernate vs ebean 作为可扩展的高性能 ORM的主要内容,如果未能解决你的问题,请参考以下文章

更新如何与 Ebean 和 Play 框架一起使用

Hibernate Collection vs List作为字段类型

微软拆分 VS Code 中 Python 扩展,部分功能可独立下载

Play Framework - Ebean - 没有为类“类名”注册 ScalarType

在play 2.4.2 java中配置Ebean?

Hibernate中Criteria的完整用法