1

过去 4 个月在一个中等规模的项目中工作——我们正在使用 JPA 和 Spring——我很确定 JPA 对于需要超过 CRUD 屏幕的项目来说并不强大......查询界面很差,Hibernate 不尊重 JPA规范一直很多时候我需要使用休眠类、注释和配置。大家觉得JPA怎么样?还不够好吗?

4

7 回答 7

4

Hibernate 已经走了很长时间。这就是为什么它具有许多 JPA 中尚不可用的功能。但随着时间的推移,JPA 会迎头赶上。在此之前,在必要时使用 JPA 和 Hibernate 特定设置。如果您以后需要切换,它会容易得多。

于 2008-09-19T19:11:57.877 回答
4

好吧,我认为大多数时候 JPA “足够好”,但我非常想念 Criteria API(仅由 Hibernate 提供)

于 2008-09-19T18:16:29.850 回答
3

好吧,如果不了解您的具体情况,我无法提供具体指导。似乎您正在使用 Hibernate 的 JPA 实现。如果您不喜欢 Hibernate 的某些内容,您可以尝试其他 JPA 实现。就查询界面而言,如果 JPA 的查询没有按照您的意愿执行,您始终能够获得一个普通的旧 Connection 并使用它。该框架的天才之处在于——至少——您不必再编写所有的 CRUD 代码。我永远不会声称 JPA 是完美的,但它比一直手写 SQL 来做琐碎的事情要好。

于 2008-09-19T18:19:37.130 回答
3

我们通过我们的内部包装框架结合了 JPA 2.0、Hibernate Core、Hibernate Search 和 Hibernate Validator。它完成了我们投入的一切:)

将它与 Maven 结合起来,我们也为我们构建了一个数据库!将 DBUnit 添加到组合中,您就拥有了所需的一切。

通过 Lucene 快速搜索,但使用 Hibernate Criteria/HQL 查询非常酷。GWT 建议框背后的所有这些功能都很棒。

于 2010-05-28T11:29:16.483 回答
2

我的建议是简单地使用 Hibernate。Hibernate 加上 JPA​​ 注释 + Hibernate 注释非常强大。您甚至可以配置一个 EntityManagerFactory 来自动发现类路径上的实体,然后调用 getSessionFactory() 来利用应用程序中的本机 Hibernate API。如果您使用 Spring,则使用 LocalContainerEntityManagerFactoryBean 和 HibernateJpaVendorAdapter 很容易做到这一点。

于 2008-12-19T21:03:22.050 回答
0

使用 JPA 与 Hibernate Annotations 的好处之一是持久类的自动配置和发现。此外,这取决于您需要在多少时间内停止使用 JPA API,如果您只使用 10% 的时间,与使用 hibernate 100 相比,它仍然会使切换提供程序容易得多% 的查询。

于 2008-09-19T19:11:35.087 回答
0

当然,任何 ORM 都比用于 CRUD 操作的手写 SQL 更好……问题是:我认为没有理由使用 JPA 代替纯 Hibernate,因为我经常混合使用两者。如果我没有获得隐藏的提供者,为什么还要使用 JPA?

于 2008-09-19T18:27:32.553 回答