JPA 1不够好

时间:2020-03-06 14:27:09  来源:igfitidea点击:

在过去4个月中,我们在一个中等规模的项目中工作
我正在使用JPA和Spring我很确定JPA不是
对于需要超过CRUD的项目而言功能强大
屏幕...查询界面不佳,Hibernate没有
始终尊重我需要使用的JPA规范
休眠类,注释和配置。
你们如何看待JPA?这还不够好吗?

解决方案

好吧,我认为大多数时候JPA都"足够好",但是我很想念Criteria API(仅由Hibernate提供)

好吧,如果我们不了解具体情况,我将无法提供具体的指导。似乎我们正在使用Hibernate的JPA实现。如果我们不喜欢Hibernate的某些功能,则可以尝试其他JPA实现。就查询接口而言,如果JPA的查询没有满足要求,则始终可以获取简单的旧Connection并进行处理。该框架的天才之处在于-至少-我们不必再编写所有CRUD代码。我永远不会说JPA是完美的,但是它比一直手写SQL来完成琐碎的事情要好。

确保任何ORM都比手工编写SQL更好地执行CRUD操作...问题是:我认为没有理由使用JPA代替纯Hibernate,因为我将两者混合在一起。如果我没有隐藏的提供程序,为什么仍要使用JPA?

使用JPA和Hibernate Annotations的好处之一是持久性类的自动配置和发现。另外,这取决于我们需要中断使用JPA API的时间,如果仅使用10%的时间,与使用100休眠模式相比,切换提供程序仍会容易得多。我们查询的百分比。

休眠状态已经存在很长时间了。这就是为什么它具有许多JPA中尚不可用的功能的原因。但是随着时间的流逝,JPA将会赶上。在此之前,必要时使用JPA和Hibernate特定设置。如果我们以后需要切换,它将变得更加容易。

我的建议只是使用Hibernate。 Hibernate与JPA批注+ Hibernate批注结合在一起非常强大。我们甚至可以将EntityManagerFactory配置为在类路径上自动发现实体,然后调用getSessionFactory()来利用应用程序中的本机Hibernate API。如果我们使用的是Spring,则可以通过LocalContainerEntityManagerFactoryBean和HibernateJpaVendorAdapter轻松完成此操作。

我们通过内部包装器框架将JPA 2.0,Hibernate Core,Hibernate Search和Hibernate Validator结合在一起。它完成了我们投入的所有工作:)

将其与Maven结合起来,我们也为我们建立了一个数据库!将DBUnit添加到组合中,我们将获得所需的一切。

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