JPA 1还不够好

在过去4个月中在中型项目中工作 – 我们正在使用JPA和Spring – 我很确定JPA对于需要超过CRUD屏幕的项目来说并不强大……查询界面很差,Hibernate不尊重JPA规范所有时间和很多次我需要使用hibernate类,注释和配置。 你们对JPA有什么看法? 这不够好吗?

好吧,我认为大部分时间JPA都“足够好”,但我很想念Criteria API(仅由Hibernate提供)

Hibernate已经有很长一段时间了。 这就是为什么它有许多在JPA中无法实现的function。 但随着时间的推移,JPA将迎头赶上。 在此之前,必要时使用JPA和Hibernate特定设置。 如果您以后需要切换,它会更容易。

在不了解您的具体案例的情况下,我无法提供具体的指导。 看起来你正在使用Hibernate的JPA实现。 如果您不喜欢Hibernate的某些内容,可以尝试其他JPA实现。 就查询界面而言,如果JPA的查询没有按照您的意愿执行,您始终可以获得普通的旧连接并使用它。 框架的天才是 – 至少 – 您不必再次编写所有CRUD代码。 我永远不会声称JPA是完美的,但它总是比用手写SQL来做琐碎的事情更好。

我们通过内部包装框架将JPA 2.0,Hibernate Core,Hibernate Search和Hibernate Validator结合在一起。 它做我们扔的一切:)

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

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

我的建议只是使用Hibernate。 Hibernate加上JPA注释+ Hibernate注释非常强大。 您甚至可以配置EntityManagerFactory以在类路径上自动发现实体,但随后调用getSessionFactory()以利用应用程序中的本机Hibernate API。 如果您使用Spring,则可以使用LocalContainerEntityManagerFactoryBean和HibernateJpaVendorAdapter轻松完成此操作。

当然,任何ORM都比手工编写SQL更适合CRUD操作…事情是:我认为没有理由使用JPA代替纯Hibernate,因为我混合了很多。 如果我没有得到隐藏的提供者,为什么还要使用JPA?

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