你喜欢 JPA 2.0 的标准 api 吗?您是否将其与框架一起使用?[已关闭]

2022-09-02 21:10:09

我习惯于在Hibernate中使用Criteria API,并且刚刚观看了JPA 2.0中的Tacris是如何工作的。

在《休眠标准》中,我最喜欢的是我们必须使用标准轻松编写。

JPA标准对我来说似乎很重,而且不如冬眠标准那么流畅。与Hibernate相比,对我来说,主要好处之一似乎是使用元模型(Entity_.java类),但它仍然有点重,因为你必须维护2个类,或者添加一个注释处理器(尽管它很容易与maven插件集成)

我在SpringSource上读过一个博客,该博客允许降低使用“JPA谓词”进行组合的复杂性,并且有点像Hibernate中的标准。

Querydsl项目似乎很有趣。

http://blog.springsource.com/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

只是想知道,对于那些使用JPA2的人来说,你是在使用标准API,还是它对你来说有点太重了?

对于那些熟悉休眠标准并且现在使用JPA标准的人来说,你最喜欢哪种方法,为什么?

您是否正在考虑使用或使用像Querydsl或Spring Specification over JPA2这样的框架来构建您的查询谓词?你认为这些框架足够成熟,可以被采用吗?


答案 1

我只能提供一个有偏见的意见,因为我是Querydsl的维护者,但我认为Querydsl和Spring Specification都足够成熟。两者都在JPA 2之上提供了一个薄层,Querydsl为查询构建提供了流畅的DSL,为DAO /存储库构建提供了Spring Data模式。

Querydsl的表现力可与HQL/ JPQL相媲美。

以下是一些 JPA 2 Criteria 查询及其 Querydsl 版本:http://source.mysema.com/forum/mvnforum/viewthread_thread,49

我们在论坛中提供快速的错误修复周期和响应式支持。Querydsl团队与Spring,DataNucleus和其他各方合作,以改善Java中类型安全查询的状态。


答案 2

不,不喜欢它,因为API缺乏可表达性和流畅性。是的,QueryDSL在更少的代码中做同样的事情,而且更自然。出于这个原因,我们对JDO自己的类型安全查询API采取了相同的方法,将其与JPA标准进行比较 https://datanucleus.wordpress.com/2010/11/09/jdo-typesafe-vs-jpa-criteria/


推荐