免费网站注册域名,flask网站开发,株洲网站搜索优化,网站建设外包注意事项Spring Data 2021.2 (Raj) Release Notes
Spring Data Commons—2.7
1、 SimpleTypeInformationMapper中配置类加载器
SimpleTypeInformationMapper现在可以配置类加载器ClassLoader。确保在将类名转换为实际类对象的过程中#xff0c;能够正确地使用到特定的类加载器。这样…Spring Data 2021.2 (Raj) Release Notes
Spring Data Commons—2.7
1、 SimpleTypeInformationMapper中配置类加载器
SimpleTypeInformationMapper现在可以配置类加载器ClassLoader。确保在将类名转换为实际类对象的过程中能够正确地使用到特定的类加载器。这样做可以应对一些复杂场景尤其是当需要访问那些通过非默认类加载器如自定义类加载器加载的类时。
2、增加了类EntityProjection
3、支持属性特定值转换器
Document(indexName guitars)
public record Guitar(Id String id,Field(type FieldType.Keyword)ValueConverter(ManufacturerPropertyValueConverter.class) // -- Manufacturer manufacturer,Field(type FieldType.Integer)Integer year) {
}import org.springframework.data.elasticsearch.core.convert.AbstractPropertyValueConverter;
import org.springframework.data.mapping.PersistentProperty;public class ManufacturerPropertyValueConverter extends AbstractPropertyValueConverter {public ManufacturerPropertyValueConverter(PersistentProperty? property) {super(property);}Overridepublic Object write(Object value) {if (value instanceof Manufacturer m) {return m.getDisplayName();}return value;}Overridepublic Object read(Object value) {if (value instanceof String s Manufacturer.class.isAssignableFrom(getProperty().getType())) {var manufacturer Manufacturer.of(s);if (manufacturer ! null) {return manufacturer;}}return value;}
}Spring Data JPA - 2.7
1、现在支持在派生查询使用DTO的情况下创建一个select子句该子句使用DTO类型的构造函数表达式
class CarProjection {String name;ListColor colors;public CarProjection (String name, Listcolor colors) {...}
}class Car{String name;OneToMany(mappedBy car)ListColor colors;
}class Color{ManyToOneCar car;
}2、JpaRepository.getReferenceById 代替 JpaRepository.getById
引入 JpaRepository.getReferenceById 作为 JpaRepository.getById 的替代与 JpaRepository.findById 的区别更加明显
3、解决了以 IdClass 作为主键的实体类导致的问题以及不能与 deleteAllByIdInBatch 一起工作的bug
4、可以使用JpaSpecificationExecutor.exists来检查由Specification指定的实体是否存在。
boolean exists(SpecificationT spec)5、 ignoreCase 操作符现在可以全面使用 lower() 函数
之前有地方用大写有地方用消息现在统一用小写 https://github.com/spring-projects/spring-data-jpa/issues/2420
Spring Data MongoDB - 3.4
1、更新方法
通过 Update 注释支持修改文档当将其添加到存储库查找器方法时将对所有匹配的文档运行定义的表达式并返回更新的文档的数量。
Update({ $inc : { visits : ?1 } })
long findAndIncrementVisitsByLastname(String lastname, int increment);Update(pipeline {{ $set : { visits : { $add : [ $visits, ?1 ] } } }})
long findAndIncrementVisitsViaPipelineByLastname(String lastname, int increment);Query({ lastname : ?0 })
Update({ $inc : { visits : ?1 } })
long updateAllByLastname(String lastname, int increment);2、属性转换器
MongoDB数据模块利用commons模块通过 MongoValueConverter 和 MongoConversionContext 实现了存储特定值的转换。除了使用 ValueConverter 的声明式方法之外 MongoCustomConversions 允许编程注册仅应用于已定义的属性的转换器实现。
MongoCustomConversions.create(it - {it.configurePropertyConversions(registrar - {registrar.registerConverter(Person.class, ssn, new MongoValueConverter() { ... });})
})Spring Data Redis - 2.7
1、ACL支持哨兵配置
当使用Redis 6时现在可以使用ACL身份验证对Redis Sentinel进行身份验证除了提供哨兵密码外还可以提供用户名。在配置用户名时jedi和Lettuce都将可以使用ACL身份验证方法。
2、修订 RedisMessageListenerContainer
这个版本中重写了 RedisMessageListenerContainer 关于订阅和生命周期状态转换行为的内部机制。start() 方法现在阻塞直到订阅完全建立。stop() 方法现在阻塞直到订阅完全关闭。 如果容器正在启动并且同时注册了监听器那么前面的实现会遇到潜在的竞争条件。竞争不会再发生因为 start() 方法被阻止来自多个线程的并发调用并且 start() 方法在容器完全启动后返回。因此当在Spring上下文中使用 RedisMessageListenerContainer 时由于同步时间延长上下文启动/关闭阶段可能需要更长一点的时间。
Spring Data JDBC - 2.4
1、对单个聚合的多个插入将被批量处理
当聚合包含一对多关系时引用实体的插入现在使用JDBC批处理操作执行。 仅当数据库不需要生成id或数据库支持为批量语句返回多个id时才启用批量操作。
2、Lock for derived queries(通过定义方法名来自动生成相应的数据库查询)
对于derived queries现在可以使用 Lock 注释来获得悲观锁
interface UserRepository extends CrudRepositoryUser, Long {Lock(LockMode.PESSIMISTIC_READ)ListUser findByLastname(String lastname);
}生成类似的查询
Select * from user u where u.lastname lastname LOCK IN SHARE MODE3、NULL优先级
如果底层数据库支持Null优先级现在可以提供一个 Sort 就像这样 Sort.by(new Sort.Order(Sort.Direction.ASC, “name”, Sort.NullHandling.NULLS_LAST))。 确定将null放在排序的最前还是最后。
4、以 Table 注解指定模式。 Table 注解现在提供了一个属性来指定表所在的模式。
Table(schema MY_SCHEMA)
static class EntityWithSchemaFromNamingStrategy {Id private Long id;
}无论是否显式指定表名都可以工作
Table(schema MY_SCHEMA, name A_TABLE_NAME)
static class EntityWithExplicitSchema {Id private Long id;
}Spring Data R2DBC - 1.5
1、与R2DBC 0.9兼容 Spring Data R2DBC可与R2DBC 0.9一起使用。要使用R2DBC 0.9需要兼容R2DBC 0.9的驱动程序并且需要将规范接口升级到 0.9.0.RELEASE 。当使用Maven时 pom.xml 可能包含以下依赖:
dependenciesdependencygroupIdio.r2dbc/groupIdartifactIdr2dbc-spi/artifactIdversion0.9.0.RELEASE/version/dependencydependencygroupIdorg.postgresql/groupIdartifactIdr2dbc-postgresql/artifactIdversion0.9.0.RELEASE/version/dependency/dependencies