有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql Java设置不同,我可以使用Java对象还是数据库?

我需要得到两组整数(记录ID)之间的差。第一组存储在文本文件中,第二组存储在mysql数据库中。 我有两个选择:

1-从数据库读取所有ID,将其加载到java对象,从文本文件加载所有ID并使用

Sets.difference(dbset, fileset);

2-仅读取文本文件ID,并使用Hql查询获取差异:

public List getDiff(Set<Integer> ids){
    Query query;
    query = getSession().createQuery("from myset s where s.id not in (:ids)");
    query.setParameterList("ids", ids);
    return query.list(); 
}

我发布这个问题是因为这些集合可能非常大,我不知道Hibernate/Mysql查询是否有任何限制(Hibernate将该查询翻译为“notin(1,2,3,…))否则,我很容易达到jvm内存限制


共 (1) 个答案

  1. # 1 楼答案

    选项#2将无法正常工作,因为它只提供文件ID中不存在的信息。若有某个ID不在DB中,但在文件中,那个么你们并没有得到它的区别。 唯一的选择#1将正确工作,它看起来不错。唯一的问题是记忆。但要创建一些能够完成这项工作并节省内存的算法并不容易。如果你的ID号高达100000,我就不会担心内存了