Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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 使用查询或使用合并滚动列表更新数据库值?_Java_Hibernate - Fatal编程技术网

Java 使用查询或使用合并滚动列表更新数据库值?

Java 使用查询或使用合并滚动列表更新数据库值?,java,hibernate,Java,Hibernate,我正在使用Java和Hibernate对数据库进行更改,但我遇到了一些令我好奇的事情。。据我所知,以下两种方法在数据库上的结果完全相同。除了性能,还有什么不同吗。在我看来,从表中提取行列表并循环遍历列表似乎有点不必要,因为您可以通过查询简单地更改值 你对此有何看法 private EntityManager em; public void updateValue(String id, String value) { em.createQuery(" UPDATE Table table

我正在使用Java和Hibernate对数据库进行更改,但我遇到了一些令我好奇的事情。。据我所知,以下两种方法在数据库上的结果完全相同。除了性能,还有什么不同吗。在我看来,从表中提取行列表并循环遍历列表似乎有点不必要,因为您可以通过查询简单地更改值

你对此有何看法

private EntityManager em;

public void updateValue(String id, String value) {
    em.createQuery(" UPDATE Table table " +
                    " SET value = :newValue," +
                    " WHERE id LIKE :newId",
            Table.class)
            .setParameter("newId", id)
            .setParameter("newValue", value);
}


public void updateValue(String id, String value) {
    List<Table> tables =
            em.createQuery("SELECT table " +
                            " FROM Table table" +
                            " WHERE id LIKE :newId",
                    Table.class)
                    .setParameter("newId", id)
                    .getResultList();
    for (Table table : tables) {
        table.setValue(value);
        em.merge(table);
    }
}
私有实体管理器em;
public void updateValue(字符串id、字符串值){
em.createQuery(“更新表”+
设置值=:newValue+
“我喜欢的地方:newId”,
表2.1(类别)
.setParameter(“newId”,id)
.setParameter(“newValue”,值);
}
public void updateValue(字符串id、字符串值){
列表表=
em.createQuery(“选择表”+
“从表格”+
“我喜欢的地方:newId”,
表2.1(类别)
.setParameter(“newId”,id)
.getResultList();
用于(表:表){
表2.setValue(值);
em.merge(表);
}
}
对于(表:表){..}

似乎是一个额外的,因为您可以轻松地使用更新查询

当表的大小增加时,也可能会导致性能问题,因为它会增加迭代循环的成本


由于有多种技术,最好使用最佳技术使其变得简单

,因为您希望更新值,并且可以通过查询轻松完成,因此没有理由改为执行选择/合并。