JDBC クエリにパラメータを設定するクラスがあるとします。
すべてのプライベート サブメソッドで共有されるfillParameters()
ため、フィールドとしてメソッドと PreparedStatement が含まれます。
さらに、これらのサブメソッドは、現在の JDBC パラメータ インデックスを認識している必要があります。
したがって、次の 2 つのソリューションが採用される可能性があります。
現在のインデックスを各メソッドにローカル パラメーターとして渡します (サブメソッドが多数ある場合は冗長)
現在のインデックス位置をフィールド (または属性) として宣言して、複数のメソッド パラメーターを介して渡す必要がないようにします。しかし、欠点は、このメソッドへの 2 回目の呼び出しが同じオブジェクト インスタンスで行われると想定すると、副作用が発生する可能性があることです (特定の理由で、実際のユースケースではなく、想像してみてください...)。実際、サブメソッドによって作成されたすべてのプロセスを呼び出す前に、現在の Index Posion を 0 に再初期化することが必須です。
ベストプラクティスは何ですか?
public void fillParameters(){
this.currentIndex = 0; //reinitialize to first index !
//....call to each submethods without need to pass currentIndex as local parameter
}
または :
public void fillParameters(){
int currentIndex = 0;
//....call to each submethods with currentPosition as index like :
feedFirstParameter(++currentIndex);
feedSecondParameter(++currentIndex);
}