用途
该技能用于在 Quarkus 项目中应用编程式 JDBC 模式,帮助开发者编写安全的 SQL 并保持清晰的事务边界。它适用于审查 Quarkus 项目中的 JDBC 或 SQL 数据访问、改进事务与参数绑定、将 SQLException 转换为领域异常、流式读取大结果集、修复 CDI 自调用绕过 @Transactional 的问题,以及审查 Agroal DataSource 的使用。
主要能力
技能覆盖以下内容:
- 注入 javax.sql.DataSource(由 Agroal 支持),并使用 try-with-resources 管理 Connection 与 PreparedStatement。
- 使用带绑定参数的 PreparedStatement,明确禁止字符串拼接。
- 将 ResultSet 行映射为 Java record(通过专门的 mapRow 方法)。
- 使用 Optional 进行安全的单行查询,不假设 rs.next() 一定成功。
- 将 SQLException 转换为领域异常(catch-translate-rethrow 模式)。
- 使用 setFetchSize 流式处理大结果集,避免 OOM。
- 使用 addBatch / executeBatch 进行批量更新,用于批量插入。
- 使用 @Transactional 定义服务边界与传播类型(例如 TxType.REQUIRES_NEW 用于独立提交)。
- 提示 CDI 自调用陷阱:始终通过注入的代理调用事务方法。
- 在开发/测试中使用 Dev Services 提供数据库。
- 说明何时优先选择 Panache(@412)而非原生 JDBC。
使用方式
技能的工作流包括:
- 阅读参考文档并评估项目上下文:阅读 references/411-frameworks-quarkus-jdbc.md,并在提出改动前检查当前项目设置。
- 收集范围并确定目标改进:识别请求的结果、约束以及最小安全改动集。
- 应用与框架一致的改动:按照参考模式与项目约定实现或重构配置/代码。
- 运行验证并报告结果:执行适当的构建/测试,并总结改动内容、验证结果及后续操作。
约束与前置条件:
- 在进行 JDBC 重构前先编译,改动后验证。
- 强制要求:应用任何改动前运行 ./mvnw compile 或 mvn compile。
- 前置条件:项目在应用 JDBC 改进前必须可编译。
- 安全要求:如果编译失败,立即停止。
- 阻塞条件:编译错误必须由用户解决后才能继续。
- 验证:应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
- 应用前:阅读参考文档以获取详细规则与示例。
适用场景
- 审查 Quarkus 项目中的 JDBC 或 SQL 数据访问。
- 改进 Quarkus JDBC 的事务与参数绑定。
- 将 SQLException 转换为领域异常或流式读取大结果集。
- 修复 Quarkus 中 CDI 自调用绕过 @Transactional 的问题。
- 审查 Quarkus JDBC 中 Agroal DataSource 的使用。
限制
技能范围限于根据参考规则与正反代码示例应用建议。项目必须先可编译,编译失败时须停止并由用户解决。关于具体收费、价格、平台支持范围等信息,资料中暂未提供。