Java:更新信息的最佳实践

时间:2012-10-22 10:22:23

标签: java hibernate sql-update hibernate-4.x

我有一个使用Hibernate连接到SQL数据库的应用程序。从应用程序的特定部分中删除某个人时,我想重置在特定部分中设置的所有信息。以下是我所关注的一个例子

Stage: Bank

Fields to be set in stage:
BankName
AccNo
IBANNo
...

从此阶段删除Person时,重置所有信息的最佳方法是什么

public void resetInfo(Person person){
    person.setBankName(null);
    person.setAccNo(null);
    person.setIBANNo(null;)
}

public void resetInfo(Person person){
    if(person.getBankName != null)  {  
        person.setBankName(null);
    }
    if(person.getAccNo != null)  {  
        person.setAccNo(null);
    }
    if(person.getIBANNo != null)  {  
        person.setIBANNo(null;)
    }
}

还是有更好的方法吗?

4 个答案:

答案 0 :(得分:3)

您之前的代码片段看起来更好,更具可读性。

答案 1 :(得分:2)

public void resetInfo(Person person) {     
    person.setBankName(null);     
    person.setAccNo(null);     
    person.setIBANNo(null;) 
} 

这很好,因为Hiberante会在内部跟踪所有字段值的更改,以便在更新查询中指定。

您也可以通过设置show_sql = true来检查这一点,以检查Hibernate生成的更新查询。

答案 2 :(得分:1)

您使用的是JPA / Hibernate /其他ORM吗? 如果是这样 - 只需将字段设置为null并让框架创建它需要的查询(意思是 - 如果字段为空,则不会运行任何内容)。

如果使用JDBC - 收集所有更改并运行单个更新。

对于对象本身,如果在将值设置为null之前检​​查该值,则无关紧要。您可以使用第一个示例(在所有字段上调用setNull())。

答案 3 :(得分:1)

在Person类中有三个银行字段并不好闻。将这些字段移动到特定的Bank类怎么样?然后你可以做setBank(null)来清除银行信息。

如果您仍希望银行信息与个人信息位于同一行,则可以在JPA中使用@Embedded。