12

我们有一个已经运行了很长时间的应用程序。现在我们将它迁移到 Spring 并可能使用 Hibernate 或任何其他 ORM。

但是我们遇到了一个问题。对已经存在的数据库使用 Hibernate 并围绕 Schema 对对象进行建模是不推荐/坏主意吗?

大多数人主张不要使用 Hibernate,而不是使用其他一些 ORM,例如 iBatis。但是在我们公司,所有人都是Hibernate的支持者。

有什么经验吗?

4

4 回答 4

14

我会说在不了解您的要求的情况下选择 Hibernate、iBatis 或其他任何东西是不负责任的。

如果您没有实体对象模型,我会说 Hibernate 是一个糟糕的选择。

如果您使用存储过程作为数据库的接口,我会说 Hibernate 是一个糟糕的选择。

如果您不喜欢 Hibernate 为您生成的动态 SQL,我会说 Hibernate 是一个糟糕的选择。

得到它?像那些 Hibernate 支持者那样的下意识反应并不是一个好主意。

可能 iBatis 或 Spring JDBC 模板是比 Hibernate 更好的选择。您应该更加了解该决定并为您的应用程序做出决定,而不是盲目地听从暴民。

你也不必全神贯注或一无所有。可以使用一种技术实现部分解决方案,而用另一种技术实现其余部分。

我建议让你的持久层接口基于接口,这样你就可以在不影响客户端的情况下交换实现。

于 2013-01-09T01:55:26.760 回答
4

我建议查看SansORM(NoORM 对象映射器)。它专为 SQL 优先开发而设计,非常适合改造现有模式。

于 2013-01-15T00:42:54.513 回答
2

如果您可以在对象下对数据库进行建模,那么 Hibernate 可以很好地工作。
反之亦然,您很可能将数据库模型作为您的域模型。您需要评估这两个模型的距离,否则您将映射数据库 => ORM 对象 => 您的域模型。我会避免这种情况。

如果我想跳过 ORM 部分,我发现自己对JDBI非常满意,我更喜欢Spring JDBC 模板

于 2013-01-09T02:00:38.120 回答
1

正如其他人指出的那样,只有当您的数据库离对象模型不远时,ORM 才是一个不错的选择。

如果是这种情况,那么一个选项将是通过 JPA 休眠两个响应:

  • Netbeans 有一个从现有数据库生成 JPA 实体的工具。这些实体不依赖于 Netbeans,因此您可以在初始逆向工程之后使用不同的 IDE。

  • Spring Data JPA 可以避免编写琐碎的查询并专注于困难的查询。

于 2013-01-09T02:46:14.827 回答