本文共 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在Query
和TypedQuery
接口中,添加了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
\\tAttributeOverride
\\tConvert
\\tJoinColumn
\\tMapKeyJoinColumn
\\tNamedEntityGraph
\\tNamedNativeQuery
\\tNamedQuery
\\tNamedStoredProcedureQuery
\\tPersistenceContext
\\tPersistenceUnit
\\tPrimaryKeyJoinColumn
\\tSecondaryTable
\\tSqlResultSetMapping
\这一改进使开发人员不再需要指定容器注释,提高了代码的可读性,进而支持编写如下的构造:
\\\@Entity\@NamedQuery(name = \"Stock.findBySymbol\
转载地址:http://yddox.baihongyu.com/