更新列的优化方式

时间:2014-05-29 15:56:52

标签: hibernate

最近在一次采访中,我被问到什么是更新列而不是完整表的优化方法。例如 - 如果我有一个用户表并且该表具有列状态,那么现在如果想要仅更新状态列而不是完整表。那么在hibernate中完成这项工作的优化方法是什么。

1 个答案:

答案 0 :(得分:2)

使用update query,就像使用SQL一样。文档中的示例:

String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
// or String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
    .setString( "newName", newName )
    .setString( "oldName", oldName )
    .executeUpdate();

但是应该小心使用它,因为它绕过了第一级缓存。这意味着此查询中已经加载到会话中的实体更新将不会知道更新,并且仍将具有旧名称。

Hibernate也可以配置为仅更新自实体加载以来已更改的字段,但这通常会适得其反。