内容提要
xbatis-ddl-auto 1.0.1 是 MyBatis 的轻量自动建表工具,通过复用实体注解生成 DDL,适用于开发环境,但生产环境需谨慎。建议先在本地或 CI 中测试,生成 SQL 供审核,避免直接执行 DDL,确保变更可追踪、可回退。
延伸解读
适用场景与边界
xbatis-ddl-auto 适合本地开发、测试库、demo 或内部工具等低风险环境,能减少实体与表结构对齐的摩擦。但团队需提前约定使用边界,比如哪些环境允许自动执行、update 是否只允许加字段、索引和默认值如何处理等,否则工具越方便,越容易把隐患藏进启动流程。
生产环境的风险
线上执行 DDL 可能引发锁表、索引构建、历史数据兼容等问题,且难以回退。直接让应用启动时改库,在表少、数据小时看似无碍,但服务多、库大后,问题往往不是“能不能改”,而是“何时改、谁负责、失败后如何收场”。因此生产环境需格外谨慎。
推荐的保守用法
建议先在本地和 CI 测试库中使用,让工具暴露实体与数据库脚本的不一致。稳定后,也最好只让它生成待审核的 SQL,再接入 Flyway、Liquibase 等迁移流程,确保每次结构变更都有版本记录、审批和回滚预案。自动化不是问题,关键是自动化要有刹车。
Q&A
xbatis-ddl-auto 是什么?
xbatis-ddl-auto 1.0.1 是一个轻量级的自动建表工具,用于 MyBatis 项目。它通过复用实体类上的注解(如 @Table、@TableId、@TableField、@ColumnDefinition)来生成并执行数据库 DDL,实现类似 JPA 的 ddl-auto 功能,但不需要引入 JPA 或 Hibernate。
xbatis-ddl-auto 适合在哪些场景使用?
它适合用于开发环境,如本地开发、测试环境、demo 项目、内部工具或低风险管理后台。在这些场景中,它可以自动生成表结构,减少手动维护脚本的麻烦。但生产环境需谨慎使用。
为什么生产环境不建议直接使用 xbatis-ddl-auto?
因为生产环境的数据库结构变更风险较高,自动执行 DDL 可能导致锁表、索引构建、历史数据兼容等问题,且难以追踪和回滚。建议先生成 SQL 供人工审核,再通过迁移工具(如 Flyway、Liquibase)执行,确保变更可控。
xbatis-ddl-auto 与 JPA 的 ddl-auto 有何不同?
xbatis-ddl-auto 为 MyBatis 项目提供类似 JPA 的 ddl-auto 体验,但不需要引入 JPA 或 Hibernate,依赖更少,更符合 MyBatis 的使用习惯。
使用 xbatis-ddl-auto 时,团队需要提前约定哪些边界?
需要约定哪些环境允许自动执行、update 操作是否只允许加字段还是也允许改类型或删字段、索引和唯一约束及默认值如何处理、生成的 DDL 在不同数据库上是否表现一致等。
作者建议如何安全地使用 xbatis-ddl-auto?
作者建议先在本地和 CI 测试库中使用,让它暴露实体与数据库脚本的不一致。稳定后,最多让它生成待审核的 SQL,而不是默认接管生产 DDL。自动化要有刹车,每次结构变更都要能追踪、能查看、能回退。