使用ujorm的程序启动慢的问题

使用ujorm访问数据库的程序启动慢,检查发现是执行OrmHandler.loadDatabase时耗时长.
跟踪的调用堆栈如下:

MetaDbService.create(MetaDatabase, Session) line: 135     
MetaDatabase.create(Session) line: 385    
OrmHandler.loadDatabase(UjoDecorator<UJO>...) line: 264    
OrmHandler.loadDatabase(Class<UJO>) line: 211    

MetaDbService.java的create方法代码片段:

    boolean ddlOnly = false;
    switch (ORM2DLL_POLICY.of(db)) {
        case CREATE_DDL:
            ddlOnly = true;
        case CREATE_OR_UPDATE_DDL:
        case VALIDATE:
        case WARNING:
        case INHERITED:
            boolean change = isModelChanged(conn, news);///< 检查模型变化.这里耗时比较长
            if (change && ddlOnly) {
                if (news.getTables().size()<tableTotalCount) {
                    // This is a case of the PARTIAL DDL
                    return;
                }
            }
            break;
        case DO_NOTHING:
        default:
            return;
    }

数据库结构没有变化时没有必要执行这个步骤。希望走DO_NOTHING路径。        
如何设置ORM2DLL_POLICY呢?
            
http://ujorm.org/javadoc/org/ujorm/orm/metaModel/MetaParams.html#ORM2DLL_POLICY

public static final Key<MetaParams,Orm2ddlPolicy> ORM2DLL_POLICY
A policy to defining the database structure by a DDL. The default value is option: CREATE_OR_UPDATE_DDL.

在数据库配置文件中设置<orm2ddlPolicy>.

    <database id="Database">
            <orm2ddlPolicy>DO_NOTHING</orm2ddlPolicy> <!-- 默认:CREATE_OR_UPDATE_DDL -->
    </database>

猜你喜欢

转载自blog.csdn.net/wherwh/article/details/82927431