OFBIZ的DBCheck

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是否包含外键。

猜你喜欢

转载自ylq365.iteye.com/blog/1167331