栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在现实世界中,哪些示例更适合使用JPA2 Criteria API?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在现实世界中,哪些示例更适合使用JPA2 Criteria API?

与Hibernate Criteria API一样,JPA 2.0 Criteria API特别适合 动态
构建查询,以处理查询结构根据运行时条件而变化的情况。

但是还有更多。尽管比Hibernate的Criteria API更为冗长,但JPA Criteria API允许构建 类型安全的
查询(如果您使用metamodel API)。下面是一个例子:

EntityManager em = ...QueryBuilder qb = em.getQueryBuilder();CriteriaQuery<Person> c = qb.createQuery(Person.class);Root<Person> p = c.from(Person.class);Predicate condition = qb.gt(p.get(Person_.age), 20);c.where(condition);TypedQuery<Person> q = em.createQuery(c); List<Person> result = q.getResultList();

在上面的代码段中,以下示例会引发编译错误:

Predicate condition = qb.gt(p.get(Person_.age, "xyz"));

如果您想知道,

Person_
静态的,实例化的,规范的元模型类,它
对应于原始
Person
实体类(由注释处理器生成)。它提供了一种强类型替代基于运行时反射的方法:

Field field = Person.class.getField("age");

优点:

  • 类型安全,编译时验证!
    • 禁止构造语法错误的查询。
    • 重构后可能引发编译错误。
    • 提供开箱即用的自动完成支持
  • 更适合动态查询。

缺点:

  • 更详细。
  • 可读性较差。

总的来说,我对JPQL感到更自在,但Criteria API的类型安全性与JPQL(以及Hibernate Criteria API)是一个主要区别。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号