Java 使用查询或使用合并滚动列表更新数据库值?
我正在使用Java和Hibernate对数据库进行更改,但我遇到了一些令我好奇的事情。。据我所知,以下两种方法在数据库上的结果完全相同。除了性能,还有什么不同吗。在我看来,从表中提取行列表并循环遍历列表似乎有点不必要,因为您可以通过查询简单地更改值 你对此有何看法Java 使用查询或使用合并滚动列表更新数据库值?,java,hibernate,Java,Hibernate,我正在使用Java和Hibernate对数据库进行更改,但我遇到了一些令我好奇的事情。。据我所知,以下两种方法在数据库上的结果完全相同。除了性能,还有什么不同吗。在我看来,从表中提取行列表并循环遍历列表似乎有点不必要,因为您可以通过查询简单地更改值 你对此有何看法 private EntityManager em; public void updateValue(String id, String value) { em.createQuery(" UPDATE Table table
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(表);
}
}
对于(表:表){..}
似乎是一个额外的,因为您可以轻松地使用更新查询
当表的大小增加时,也可能会导致性能问题,因为它会增加迭代循环的成本
由于有多种技术,最好使用最佳技术使其变得简单,因为您希望更新值,并且可以通过查询轻松完成,因此没有理由改为执行选择/合并。