博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA 2.2改进了易用性
阅读量:5973 次
发布时间:2019-06-19

本文共 1922 字,大约阅读时间需要 6 分钟。

\

看新闻很累?看技术新闻更累?试试,每天上下班路上听新闻,有趣还有料!

\
\\

Oracle了(JPA)2.2版。JPA规范用于将Java对象持久化映射到关系数据库中。

\\

作为的组成部分,JPA 2.2中添加了对一些新特性的支持,包括查询结果的流处理、将ManagedBeans注入AttributeConverters、重复注解(Repeating Annotations),以及操作中的类等。虽然更改为数不多,但是特点显著,因为JPA 2.2是首个以Java 8为基线的版本。

\\

在《Java Magazine》11月/12月合刊(第17期)上,发表了Josh Juneau的文章“”。文中指出:

\\
\

最终,JPA与Java SE 8保存了一致。它支持开发人员使用日期/时间API、查询结果流和重复注解等特性。

\
\\

查询结果流

\\

JPA在QueryTypedQuery接口中,添加了getResultStream()方法。使用这一改进,查询可返回一个结果流,这提供了一种操作数据的便利方法。在JPA 2.2之前,查询只能返回一个列表。使用新的流方法的示例代码如下:

\\
\Stream\u0026lt;Stock\u0026gt; stocks = entityManager  \      .createNamedQuery(Stock.FIND_HIGH_PERFORMERS, Stock.class)  \      .getResultStream();\\stocks.filter(...)
\\

流处理提高了数据库查询的性能。但是在一些情况下,我们会需要操作一些大规模的数据集,这时ResultSet分页的执行效果可能会更好。一些持久化方法同样考虑到了性能上的需求,并提供了更好的getResultStream()实现。面对大规模数据流时,开发人员应考虑性能问题。

\\

可注入的AttributeConverter

\\

JPA 2.2中添加了将ManagedBeans注入到AttributeConverter的特性。该特性是使用标注上下文和依赖注入(CDI,Contexts and Dependency Injection)给出的@Inject注解实现的。使用该特性,可在必要时将CDI资源注入到任一AttributeConverter。示例代码如下:

\\
\@Converter(autoApply = true)\public class TheAttributeConverter implements AttributeConverter\u0026lt;TheObject, String\u0026gt; {\    @Inject\    private MyUtils utils;\\\    @Override\    public TheObject convertToEntityAttribute(String s) {\        return utils.toTheObject(s);\    }\\    @Override\    public String convertToDatabaseColumn(TheObject obj) {\        return utils.toString(obj);\    }\}
\\

可重复注解

\\

在Java 8中,如果一个注解使用@Repeatable定义了容器注解(Container Annotation),那么该注解就是可重复的。可重复注解允许类、方法或属性上的同一注解对应于多个实例。JPA 2.2指定了下列注释是可重复的:

\\
  • AssociationOverride\\t
  • AttributeOverride\\t
  • Convert\\t
  • JoinColumn\\t
  • MapKeyJoinColumn\\t
  • NamedEntityGraph\\t
  • NamedNativeQuery\\t
  • NamedQuery\\t
  • NamedStoredProcedureQuery\\t
  • PersistenceContext\\t
  • PersistenceUnit\\t
  • PrimaryKeyJoinColumn\\t
  • SecondaryTable\\t
  • SqlResultSetMapping\

这一改进使开发人员不再需要指定容器注释,提高了代码的可读性,进而支持编写如下的构造:

\\
\@Entity\@NamedQuery(name = \"Stock.findBySymbol\

转载地址:http://yddox.baihongyu.com/

你可能感兴趣的文章
【Linux系统编程】 Linux系统调用概述
查看>>
SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
查看>>
hive中partition如何使用
查看>>
查看mysql数据库版本方法总结
查看>>
大牛手把手教你做日历(建议你看看,你会有收获的)
查看>>
Django中的ORM
查看>>
iOS开发UI篇—Quartz2D使用(图片剪切)
查看>>
spring学习笔记(20)数据库事务并发与锁详解
查看>>
关于Simple_html_dom的小应用
查看>>
鲁肃:蚂蚁金服的三个梦想
查看>>
【springmvc+mybatis项目实战】杰信商贸-27.POI由HSSF升级为XSSF
查看>>
数学常数e的含义
查看>>
APM基础小记
查看>>
MVC
查看>>
CentOS 7 下 Oracle 11g 安装教程
查看>>
JS·基础(一)
查看>>
# 学习笔记-协议# OSI七层模型 与 TCP/IP五层协议
查看>>
Callbacks, Promises and Async/Await
查看>>
华为程序员:加6天班!加班费1.4万元!网友:我能加到它破产
查看>>
解读 JavaScript 之引擎、运行时和堆栈调用
查看>>