我想导出数据库中的所有对象(行)。它们不能同时适应内存,所以我想流式传输而不是一次性获取所有内容。哪种方法的内存占用量低? JDO(Datanucleus implementaion)是否支持流媒体?
在另一个项目中,我能够使用jdbc ResultSet和100的fetchsize来完成它。但是,如果可能的话,我想使用JDO的映射,而不是简单的JDBC implmenetation。
编辑:我忘了说:我为PersistenceManager使用强大的缓存,我可以禁用它吗?无论如何,数据都是只读的,无需保留。
编辑:查询代码:
调用Repository方法的服务方法使用Springs @Transactional(readonly = true)注释进行注释,persistenceManagerFactory是一个Spring代理,try-catch-finally处理省略,level1缓存已经说得很强:
public class MyRepository extends AbstractRepository<MyItem> {
public Collection<MyItem> retrieve(Object value) {
return query("myfiel==:myvalue",value)
}
}
public class AbstractRepository<T> {
private Class<T> type;
private PersistenceManagerFactory persistenceManagerFactory;
public Collection<T> query(String query, Object value) {
return createManager().newQuery(type, query).execute(value);
}
public PersistenceManager createManager() {
return persistenceManagerFactory.getPersistenceManager();
}
}
答案 0 :(得分:0)
结束评论:用JDO和level1 cache = strong解决不可能。我评估使用Spring JdbcTemplate进行此类查询。