用途:为访问数据库的业务逻辑入口点(命令处理器、查询处理器、用例、应用服务)建立统一的事务边界,使业务约束、业务规则、业务操作与持久化在同一事务内原子完成,要么全部成功,要么全部回滚。若持久化技术不支持事务(如部分 NoSQL、对象存储、文件存储),本技能不适用。
主要能力与规则:入口点通过项目已有的库、框架或 ORM 打开事务,不引入自定义事务机制,并遵循项目惯用模式(装饰器、上下文管理器、回调、包装函数或显式 begin/commit/rollback)。定义专用的 runWithinTransaction 函数:接收含隔离级别等设置的对象与业务逻辑回调,负责开启、成功提交、失败回滚,且只承担事务管理职责。事务边界放在入口点,而非内部辅助函数;内层辅助、业务约束与持久化参与事务但不自行开启,也不在同一入口流程中嵌套独立事务。所有访问数据库的步骤,包括校验前置条件的约束、影响业务决策的读操作、存储更新数据的持久化操作,都必须在事务内。提交失败须按入口点的错误约定向上传播,不得中途手动提交或吞掉事务错误。
例外与组合:按命令查询分离,仅做读、使用最低阻塞隔离级别的只读查询处理器可不包交互式事务,改走连接池读取;因为该隔离级别下没有跨语句快照收益,而交互式事务会固定单一物理连接、使包括关系包含与 Promise.all 扇出在内的读取串行化,部分驱动还会弃用或报错。写操作的命令处理器仍须整体包事务,其前置读取也留在事务内。当执行上下文技能启用时,runWithinContext 与 runWithinTransaction 为两个单一职责函数,入口点组合调用,事务存入执行上下文供内部函数通过 getter 获取;未启用时事务作为参数显式传给回调。仓库从上下文取不到事务时,应为该操作新建独立事务,使仓库方法在事务内、外均可用。数据未说明隔离级别默认值与各语言具体实现细节,暂未提供。