<!-- generated-by: gsd-doc-writer -->
# JDBC 业务代码指南

与 [JPA](../project-development/jpa-querydsl-code-guide.md)、[MyBatis-Flex](../project-development/mybatis-flex-code-guide.md)、[R2DBC](../project-development/r2dbc-code-guide.md)共同组成持久化开发入口。

## Repository

业务 Repository 使用接口组合 Core 的 CRUD/状态等 fragment，声明 `GetEntityClassOperation<E>` 并提供 `getEntityClass()`。只组合对象实际需要的能力；不要生成空 `RepositoryImpl` 或转发壳。

简单外键 `count/exists/delete/findBy` 定义在具体仓储。派生方法表达字段条件并不自动代表所有租户、删除、权限条件已具备；按实际调用核对隔离。

完整参考：[CategoryDefinitionRepository](../../../ineed-modules/ineed-config/ineed-config-category/ineed-config-category-jdbc/src/main/java/com/ineed/config/category/jdbc/repository/CategoryDefinitionRepository.java)。

## Entity、Converter、Manager

Entity 使用当前 JDBC 基类和 Spring Data 映射，声明业务所需租户/状态能力。Converter 在 `converter/`，仅覆盖有特殊映射的方法。

Manager 组合具体能力，提供仓储 operation、converter 和查询表路径。业务规则放生命周期或领域方法，事务编排仍由 Service 承担。

查询使用本模块手写 `QXxx extends QuerydslSqlTable`；Manager 覆盖 `getSqlTablePath()` 并引用 Q 类型字段。不要将 JPA 自动生成 Q 类或 MyBatis-Flex TableDef 当作 JDBC 的实现。

源码参考：[QCategoryDefinition](../../../ineed-modules/ineed-config/ineed-config-category/ineed-config-category-jdbc/src/main/java/com/ineed/config/category/jdbc/querydsl/QCategoryDefinition.java)、[CategoryDefinitionManager](../../../ineed-modules/ineed-config/ineed-config-category/ineed-config-category-jdbc/src/main/java/com/ineed/config/category/jdbc/manager/CategoryDefinitionManager.java)。

## 查询和关系

在 `appendWhereOfQuery` 等真实扩展点补业务过滤；关键字搜索通过既有入口声明字段。查询投影与 VO 对齐，检查排序、分页、空条件和 join 的租户/删除过滤。

关系查询由 Manager 组织查询并返回需要的 VO；Service 不先查关系 ID 再逐个回查对象。物理删除子表数据通过对应 Repository 方法封装，钩子时序见[删除规范](../project-development/delete-hook-and-logging-guide.md)。

## 验证

先运行 JDBC 框架契约入口，再验证真实目标数据库中的列映射、唯一约束、派生查询、join 和事务回滚。Core 的记录型或内存型仓储测试不能代替真实数据库。

在 Core 根目录运行框架链路：

```bash
mvn -pl ineed-core-tests/ineed-core-test-webmvc -am \
  -Dtest=WebMvcJdbcBusinessChainTest,WebMvcJdbcSearchBusinessChainTest \
  -Dsurefire.failIfNoSpecifiedTests=false test
```

命令的环境前提与证据分层见[测试规范](../standards/testing.md)。业务数据库测试入口随具体模块维护，不使用教程命令重建已有业务库。
