1. 遍历entityengine.xml中定义的group,按照group对应的datasource进行检查。
2. 从连接池中获取connection,读取DatabaseMetaData。
3. 打印database详细信息,例如:database信息(DatabaseProductName、DatabaseProductVersion)、驱动信息(driver-name,driver-version)、DB和驱动支持的特性描述(supportsTransactions)。
4. 获取DatabaseMetaData中所有的表(Table)信息,获取表名和表类型。
5. 根据表信息,获取所有的列(Column)信息。
6. 遍历检查实体模型(ModelEntity)。
a) 如果是ModelViewEntity,则跳过,不检查。
b) 如果ModelEntity在数据库中已经存在,则检查列信息,包括列类型、长度、精度、主外键、索引,对于不存在的列,并且entityengine中addMissing为true,则自动添加字段。
c) 如果不存在,并且entityengine中addMissing为true,则自动建表。
7. 对比数据库中的表信息与ModelEntity,如果数据库中已经存在,但ModelEntity未配置,则作出Warning,提示数据库中存在的表名。
8. 对于新增加的表,添加外键索引、添加外键
9. 对于新增加的表,建立自身索引字段的索引。
10. 检查关系表中,所有的relation是否包含外键。
OFBIZ的DBCheck
猜你喜欢
转载自ylq365.iteye.com/blog/1167331
今日推荐
周排行