26

上次我听到很多关于 Hibernate 的抱怨。事实上,我对 Hibernate 也有一些痛苦的经历。所以我读到了EbeanSiena

两者都有有趣的方法。不幸的是,数据库访问层很容易编写,但是如果您的项目增长并且您必须处理出色的数据库表,您就会知道它们是否好用。所以评估这样的工具真的很困难。Hibernate 是众所周知的,你可以确定你可以用它解决你的问题。有时你需要学习很多东西,但你可以解决它。

Ebean 怎么样?有现实世界的应用吗?支持哪些数据库?它可靠吗?

在搜索了更多之后,我发现有更多的 ORM 框架,那么至少有一个可靠的吗?

4

5 回答 5

15

Rob(Ebean 提交者)在这里。

Ebean现在大约4岁多了。我会说它现在相当成熟。支持的数据库包括 Oracle、MySql、Postgres、H2 和 SQL Server(以及最近的 SQLite)。Ebean 正在做其他 ORM 没有的东西,例如 Autofetch(自动查询调整),所以我不适合“成熟度评级”。IMO 虽然 Ebean 社区相对较小,但您可能需要访问 Ebean 谷歌小组才能与他们互动。

任何现实世界的应用程序?是的,但你最好真的问 Ebean 社区。当然,对批处理(批处理大小、事务的级联转换等)和我在 JPA 等中看不到的大型查询支持有很好的支持(你可能会得到与 Hibernate 的无会话支持类似的东西)。

无论如何,希望这可以回答您问题的一小部分。

干杯,罗布。

于 2011-03-06T22:22:29.317 回答
6

我目前是 Siena 的开发人员,但不是很久。让我解释一下为什么我成为这个项目的开发人员?我去锡耶纳是因为我想使用 Play+GAE,而锡耶纳似乎是 GAE DB 的一个良好开端,我真的很想避免使用 JDO/JPA。然后,我开始真正欣赏 Siena 的直接、轻量和简单的方法以及如此简单的 API。它并不像 JDO 那样伪装成一体化的抽象层,也不像 JPA 那样伪装成最伟大的标准 DB API。它真的让我想到了来自 Python/Ruby 的 DB API,它真的符合我的观点:我想要一个简单的 DB API,它可以让我解决我的大部分问题,当我遇到更复杂的问题时,我会使用较低层的 API,但肯定不是 hibernate 之类的抽象层。

让我的代码在 GAE DB 或 JDBC 上运行的可能性也是一个很好的方面。再一次,Siena 并没有假装在两个世界中都提供完全相同的东西,因为 SQL 和 NoSQL 并不真正兼容(但 ORM 也不真正兼容 SQL 模型:))。但是再一次,能够在多个数据库中依赖相同的 API 是非常实用的。

最后,图书馆是一个罐子,你不必检索整个宇宙来使用它。

所以,我逐渐成为了锡耶纳的提交者,因为我想参与这个美好的小冒险。现在 siena 团队正在开发一个新版本,保留相同的简单 API,带来新的有趣功能并真正改进所有后端代码,使其更容易扩展新的数据库支持。Siena 是一个由用户体验驱动的实用 API,这就是我喜欢它的原因 ;)

帕斯卡

于 2011-02-04T23:55:29.177 回答
1

我们在MyBatis方面拥有非常丰富的经验,它本身不是 ORM,而是另一类持久性管理器,即 SQL Mapper。使用它,您可以从 SQL 语句开始,并指导它如何将结果行映射到 POJO。它在概念上很容易理解和调整,里面没有太多的魔法。如果您熟悉 SQL 或需要使用已建立的模式,这是理想的选择。

于 2010-12-04T07:31:48.883 回答
1

除了 Ebean 和锡耶纳:

您可以尝试专注于CRUDing不可变对象的 JIRM(是的,我是作者)。

还有jOOQ和托梁。

我觉得JIRM最小化了 DTO 的数量,因为域对象是不可变的,不继承、实现和/或没有“增强/工具化”。这与锡耶纳和伊比恩不同。

此外,由于对象是不可变的,因此更多地关注每列更新而不是整个对象,考虑到当今的 AJAX 接口(与旧的 POST 整个 bean 模型相比),这更有意义。

于 2012-11-16T22:33:56.223 回答
0

使用 EB3 怎么样,例如 JBoss (www.jboss.org)?

于 2011-01-21T17:57:10.967 回答