如何在DataStax Java Driver 4.14中为DAO/Mapper全局设置一致性级别
在DataStax Java Driver 4.14中全局设置DAO/Mapper的一致性级别
在4.14版本中,你可以通过以下两种方式实现全局设置,避免在每个DAO方法中重复指定一致性级别:
1. 为整个Mapper设置全局默认属性
通过MapperBuilder的withDefaultStatementAttributes方法,可为该Mapper生成的所有DAO统一配置默认的Statement属性(包括一致性级别)。
修改后的Mapper创建代码:
// 初始化Mapper时配置全局默认一致性级别 AppTrackingMapper mapper = new AppTrackingMapperBuilder(session) .withDefaultStatementAttributes(builder -> builder.setConsistencyLevel(DefaultConsistencyLevel.valueOf(consistencyLevel)) ) .build();
简化DAO方法:
无需再在DAO方法中传入Function<BoundStatementBuilder, BoundStatementBuilder>参数:
@Select PagingIterable<AppTrackingEvent> findBySessionId(final UUID sessionId);
Repository层调用简化:
public List<AppTrackingEvent> getBySessionId(final UUID sessionId) { return this.mapper.getAppTrackingDao().findBySessionId(sessionId).all(); }
2. 为单个DAO独立设置默认属性
如果仅需为某个特定DAO配置全局一致性级别,而非整个Mapper,可直接使用DaoBuilder创建DAO实例并设置默认属性:
// 单独为AppTrackingDao配置默认一致性级别 AppTrackingDao appTrackingDao = new AppTrackingDaoBuilder(session) .withDefaultStatementAttributes(builder -> builder.setConsistencyLevel(DefaultConsistencyLevel.valueOf(consistencyLevel)) ) .build();
这种方式下,该DAO的所有方法都会自动应用指定的一致性级别,无需在调用时重复设置。
说明
这两种方式替代了旧版本中Mapper.Option.consistencyLevel()的用法,是4.x版本中标准化的全局属性配置方案,完全适配4.14版本的API。
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

