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

Person クラスに 3 つの bank フィールドがあると、いい匂いがしません。これらのフィールドを特定の銀行クラスに移動するのはどうですか? 次に、銀行情報をクリアするために setBank(null) を実行できます。

それでも銀行情報を個人情報と同じ行に入れたい場合は、JPA で @Embedded を使用できます。

于 2012-10-22T10:32:13.473 に答える
1

JPA/Hibernate/その他の ORM を使用していますか? その場合は、フィールドを null に設定し、フレームワークに必要なクエリを作成させます (つまり、何も実行される前にフィールドが null の場合)。

JDBC を使用する場合 - すべての変更を収集し、単一の更新を実行します。

オブジェクト自体に関しては、null に設定する前に値を確認しても問題ありません。最初の例を使用できます(setNull()すべてのフィールドを呼び出します)。

于 2012-10-22T10:28:38.480 に答える