SuperAPI AI 工具集

411-frameworks-quarkus-jdbc

编程与开发

查看项目

更新于 10-15 09:03

技能介绍

用途

该技能用于在 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。

使用方式

技能的工作流包括:

  1. 阅读参考文档并评估项目上下文:阅读 references/411-frameworks-quarkus-jdbc.md,并在提出改动前检查当前项目设置。
  2. 收集范围并确定目标改进:识别请求的结果、约束以及最小安全改动集。
  3. 应用与框架一致的改动:按照参考模式与项目约定实现或重构配置/代码。
  4. 运行验证并报告结果:执行适当的构建/测试,并总结改动内容、验证结果及后续操作。

约束与前置条件:

  • 在进行 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 的使用。

限制

技能范围限于根据参考规则与正反代码示例应用建议。项目必须先可编译,编译失败时须停止并由用户解决。关于具体收费、价格、平台支持范围等信息,资料中暂未提供。