0

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

Stage: Bank

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

从这个阶段删除一个人时,重置所有信息的最佳方法是什么

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

4 回答 4

3

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

于 2012-10-22T10:26:55.017 回答
2
public void resetInfo(Person person) {     
    person.setBankName(null);     
    person.setAccNo(null);     
    person.setIBANNo(null;) 
} 

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

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

于 2012-10-22T10:31:56.517 回答
1

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

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

至于对象本身,是否在将其设置为 null 之前检查该值并不重要。您可以只使用您的第一个示例(调用setNull()所有字段)。

于 2012-10-22T10:28:38.480 回答
1

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

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

于 2012-10-22T10:32:13.473 回答