1.0jpa 2.0

在今天的帖子中,我们将看到名为EasyCriteria的框架的新版本。 在这篇文章的结尾,我们将在博客中看到这里的内容。 不幸的是,JPA标准存在一个巨大的问题,即冗长。 为什么不变得更容易? 像这样认为EasyCriteria框架已经诞生,并且现在已经在2.0版中。 要使用JPA标准进行简单的JPQL,需要以下代码:

CriteriaQuery<Person> criteriaQuery = criteriaBuilder.createQuery(Person.class);
Root<Person> root = criteriaQuery.from(Person.class);
criteriaQuery.select(root);
TypedQuery<Person> query = entityManager.createQuery(criteriaQuery);
query.getResultList();

注意执行查询所需的所有代码:从Person p中选择p。 检查以下使用EasyCriteria进行相同条件的难易程度:

EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQuery(entityManager, Person.class);
easyCriteria.getResultList();

1.0版和2.0版之间的区别在于将方法简化为通用方法。 要比较=,> =,<,<=和其他方法的方法,只需使用如下所示的API:

easyCriteria.andGreaterThan('hairSize', 10.4f); // >easyCriteria.andGreaterOrEqualTo('height', 11.00d); // >=easyCriteria.andLessThan('totalBooksOwned', 30L); // <easyCriteria.andLessOrEqualTo('firstJobDate', firstJobDate); // <=easyCriteria.andJoinEquals('dogs', 'age', 15); // =easyCriteria.andJoinStringIn('dogs', 'name', names); // value in (x, i, z, ...)easyCriteria.andJoinStringLike('dogs', 'name', '%y');

EasyCriteria框架的理想之一是向用户公开尽可能少的API。 这样思考,EasyCriteria在其API中添加了“ OR”条件,而没有新的类。 下面看一下如何使用OR进行查询:

select s from Song s where s.id = 1 or s.length = 40 or s.artist = 'Group 1 Crew'
easyCriteria.orEquals('id', 1).orEquals('length', 40).orEquals('artist', 'Group 1 Crew');

可以执行另一种OR:

select s from Song s where (s.id = 1) or (s.id = 2) or (s.length = 40) or (s.artist = 'Group 1 Crew')
easyCriteria.orEquals('id', 1, 2).orEquals('length', 40).orEquals('artist', 'Group 1 Crew');

并且可以进行复杂查询,例如:

select s from Song s where (s.totalDownloads = 20 or s.weight = 10.00) and (s.price = 20.00 or s.type = :type)
easyCriteria.orEquals(1, 'totalDownloads', 20L).orEquals(1, 'weight', 10.00f).orEquals(2, 'price', 20.00d).orEquals(2, 'type', SongType.PRAISE);

将索引的想法添加到了与一组OR一起使用的API中。 第一个OR组由“ totalDownloads”和“ weight”组成,第二个组具有“ price”和“ type”作为元素。 作为默认索引,始终使用值1。 上面的标准可以写成:

easyCriteria.orEquals('totalDownloads', 20L).orEquals('weight', 10.00f).orEquals(2, 'price', 20.00d).orEquals(2, 'type', SongType.PRAISE);

可以创建一个查询来执行上述查询的逆运算,并以OR分隔AND:

select s from Song s where (s.id = 1 and s.name = 'Sing Out') or (s.id = 2 and s.name = 'Alive')
easyCriteria.addAndSeparatedByOr(1, 'id', 1).addAndSeparatedByOr(1, 'name', 'Sing Out').addAndSeparatedByOr(2, 'id', 2).addAndSeparatedByOr(2, 'name', 'Alive');

今天就这些了,希望您喜欢新版本。 认为此框架完整将需要很长时间。 我可以依靠JoãoNeves(http://about.me/joaonevesfilho)和Sasaki(http://curriculum.rodrigosasaki.com/)来帮助实现OR功能。 在这里可以看到框架的官方页面: http : //easycriteria.uaihebert.com/ 。 最好的是,它是开源的(http://code.google.com/p/easy-criteria/)。

关于框架的其他事实是,使用Cobertura进行的测试100%覆盖了该框架。 EasyCriteria已通过OpenJPA,EclipseLink和Hibernate进行了测试。 现在是时候寻求您的帮助了。 在测试的实现中发现错误; 如果您有5分钟的时间在bug中投票,那就太好了。 通过您的投票,可以更快地更正该错误。

  • EclipseLink:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 386354
  • OpenJPA:https://issues.apache.org/jira/browse/OPENJPA-2333
  • Hibernate:https://hibernate.onjira.com/browse/HHH-7985

博客中会有什么? 我写这篇文章花了很多时间,因为我正在写完第一本书。 如果神的旨意,这本书将在三月份发行。 在这里的新帖子暂停中,我研究了很多Maven,我希望我的下一篇文章是有关基本Maven和完整Web应用程序的迷你书。 是的,我说“申请”是复数形式。

参考: EasyCriteria 2.0 –在uaiHebert博客上,我们的JCG合作伙伴 Hebert Coelho 应该可以轻松制定JPA Criteria 。

翻译自: https://www.javacodegeeks.com/2013/02/easycriteria-2-0-jpa-criteria-should-be-easy.html

1.0jpa 2.0

1.0jpa 2.0_EasyCriteria 2.0 – JPA标准应该很容易相关推荐

  1. EasyCriteria 2.0 – JPA标准应该很容易

    在今天的帖子中,我们将看到名为EasyCriteria的框架的新版本. 在这篇文章的结尾,我们将在博客中看到这里的内容. 不幸的是,JPA标准存在一个巨大的问题,即冗长. 为什么不变得更简单? 像这样 ...

  2. jpa中::::_项目学生:JPA标准查询

    jpa中:::: 这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server , 业务层 , ...

  3. jpa 分页 排序 过滤_使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载...

    jpa 分页 排序 过滤 Primefaces数据表惰性分页有效,但是在Web上使用Criteria搜索完整示例后,我感到非常沮丧. 所以我混合了来自 http://stackoverflow.com ...

  4. jpa 与非jpa 结合_EasyCriteria –使用JPA标准的简便方法

    jpa 与非jpa 结合 今天,我们将看到有关此工具的信息,该工具使使用JPA Criteria更加容易. 使用该库的应用程序将在JPA实现中更加简洁,易于使用和可移植. 在本文的结尾,您将找到要下载 ...

  5. 使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载

    Primefaces数据表惰性分页有效,但是在Web上使用Criteria搜索完整示例后,我感到非常沮丧. 所以我混合了来自 http://stackoverflow.com/questions/13 ...

  6. 项目学生:JPA标准查询

    这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server , 业务层 , 具有Spring ...

  7. junit4 javaee 5.0 jpa SSH 单元测试问题集锦

    http://blog.csdn.net/wuqilianga/article/details/51295787 本篇文章基于已经实现了ssh集成的demo.项目.具体的ssh项目怎么配置,请参考本文 ...

  8. 计算机房安全等级标准,等级保护测评 【物理安全】 三级 详解测评要求项的测评判分标准:0分标准和满分标准...

    原标题:等级保护测评 [物理安全] 三级 详解测评要求项的测评判分标准:0分标准和满分标准 等级保护[物理安全]测评: 详解[物理安全](三级):物理位置的选择.物理访问控制.防盗窃和防破坏.防雷击. ...

  9. rba有哪几個主要組成部分_RBA6.0版标准之E部分-管理体系有哪些具体内容?RBA的管理体系有什...

    原标题:RBA6.0版标准之E部分-管理体系有哪些具体内容?RBA的管理体系有什 责任商业联盟(RBA6.0)版本推出时间不长,采用RBA6.0版本进行审核的企业不多.不少企业咨询上海明傲,相对于之前 ...

最新文章

  1. show-busy-java-threads查找CPU占用高
  2. 第一篇文章,做个纪念
  3. XLSReadWriteII5使用参考
  4. React Axios的定义,以及使用方式
  5. 【深度学习】什么是目标检测中的平均精度均值(mAP)?
  6. 2020非全日计算机博士,在职攻读博士是不是非常难,免考在职博士和非全日博士有什么不同...
  7. “高级”CSS样式一般应用于控制网页内容的外观。附加样式表分为内嵌样式表和外部样式表两种方式。
  8. ToneBoosters Plugins Bundle for Mac(音频效果器插件包)
  9. Java设计模式-工厂模式
  10. 【FinE】期权定价的二叉树方法(1)
  11. MySQL数据库的一些简单操作
  12. 金蝶软件认证显示服务器异常,金蝶提示云服务器异常
  13. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月13日
  14. 运维老师傅:问题排查经验总结
  15. 多元高斯分布是非参_多元高斯分布(多元正态分布)简介
  16. Python学习 | 2022-1-14 在jupyternotebook中用markdown
  17. 【4月比赛合集】55场可报名的数据挖掘奖金赛,任君挑选!
  18. linux万年历,万年历_十万代码进行时的技术博客_51CTO博客
  19. navicat for Oraclel链接oracle 报错oracle library is not loaded的解决办法
  20. java 图片按照比例压缩

热门文章

  1. art-template入门(三)之语法
  2. Spring Boot 单元测试详解+实战教程
  3. 【集合框架】JDK1.8源码分析之HashMap(一)
  4. Truebine聚合监控
  5. 2015蓝桥杯省赛---java---B---8(饮料换购)
  6. Linux中打包和解压到的方法
  7. java aop 实例_Spring aop 简单示例
  8. python oj 输入_Python写OJ题时输入问题
  9. rabbitmq-通配符模式
  10. ReviewForJob——桶式排序+基数排序(==多次桶式排序)