我有一个使用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;)
}
}
还是有更好的方法吗?
答案 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。