用途:该技能用于 BoxLang 中的 ORM 事务与会话管理,帮助在实体保存、删除时保证原子性。
主要能力:transaction{} 块内的 entitySave/entityDelete 会原子提交,正常退出自动提交,未捕获异常自动回滚。支持 transactionCommit() 手动提交、transactionRollback() 手动回滚,以及 transactionRollback("mySavepoint") 回滚到命名保存点;transactionSetSavePoint() 可设置保存点,实现部分回滚。ORMFlush() 可在当前事务内把挂起的会话变更写入数据库但不提交,常用于获取自增 ID 后再建立关联。会话管理提供 entityReload() 重新加载实体、ORMClearSession() 清空会话、ORMCloseSession()/ORMCloseAllSessions() 关闭会话。事务块可通过 datasource="secondaryDB" 指定数据源,各数据源事务相互独立;嵌套 transaction{} 默认加入外层事务而非新建独立事务。
使用方式:在 transaction{} 中执行实体操作,配合 try/catch,在 catch 中先 transactionRollback() 再 rethrow;需要生成 ID 时先 ORMFlush()。
适用场景:服务层封装创建用户与档案、批量更新等需要一致性的操作。
限制与注意:不要在事务块外调用 entitySave()/entityDelete();catch 中未先回滚就提交会提交错误状态;事务内未刷新就调用 ORMClearSession() 会静默丢弃挂起变更;隔离级别通常依赖数据库默认(如 READ COMMITTED)。