Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ForeignCollectionField创建ORMlite对象_Java_Android_Ormlite - Fatal编程技术网

Java 使用ForeignCollectionField创建ORMlite对象

Java 使用ForeignCollectionField创建ORMlite对象,java,android,ormlite,Java,Android,Ormlite,我是Ormlite集成新手,但在一个学习项目(android应用程序)中成功实现了它 我面临的问题是性能+概念问题 我正在使用Jackson获取中心对象的列表,然后使用ORMLite将所有内容持久化到DB中 我的中心对象有两个ForeignCollectionField,我的注释是正确的,通过上面的代码,我可以得到该中心可以处理的废物的正确“连接”以及该中心本身的性质 我可以使用sqlite编辑器检查我的数据库,它看起来很好 问题是,用4000个稍长的对象填充数据库大约需要8mn 下面是我的as

我是Ormlite集成新手,但在一个学习项目(android应用程序)中成功实现了它

我面临的问题是性能+概念问题

我正在使用Jackson获取中心对象的列表,然后使用ORMLite将所有内容持久化到DB中

我的中心对象有两个ForeignCollectionField,我的注释是正确的,通过上面的代码,我可以得到该中心可以处理的废物的正确“连接”以及该中心本身的性质

我可以使用sqlite编辑器检查我的数据库,它看起来很好

问题是,用4000个稍长的对象填充数据库大约需要8mn

下面是我的asyncTask中使用的部分代码(此代码运行良好)

正如你所看到的,我在一个主FOR循环中有两个FOR循环(不是很聪明),你能告诉我如何优化和纠正这个问题吗。 @格雷:请帮忙:)
谢谢

您应该使用callBatchTasks方法。这样可以提高速度

你在这里有一个很好的解释:

这里有一个很好的例子:

Center[] c = new Center[0];
//fill c with Center objects from jackson OK
assert pCenterDao != null;

for(final Center center : c) {
    try {
        pCenterDao.create(center);

        for (CenterTypesItem typesItem : center.getCenterTypesCollection()) {
            CenterTypesItem centerTypesItem = new CenterTypesItem(typesItem.getId(),center);
            pCenterTypesItemDao.createOrUpdate(centerTypesItem);
        }

        for (CenterWastesItem wastesItem : center.getWastesCollection()) {
            CenterWastesItem centerWasteItem = new CenterWastesItem(wastesItem.getId(),center);
            pCenterWastesItemDao.createOrUpdate(centerWasteItem);
        }

        count = pCenterDao.countOf();
        publishProgress(count, Long.valueOf(c.length));

    } catch (SQLException e) {
        e.printStackTrace();
        result = false ;
    }

    if (isCancelled()){
        result = false ;
        break;
    }
}