現在、Javaを使用してデータベースに顧客を挿入しようとしています。
public void saveCustomer(Customer c) {
getConnection();
try {
CallableStatement pstmt = con.prepareCall("{call sp_saveCustomer(?,?)}");
pstmt.setString(1, c.getName());
pstmt.setString(2, a.getLastName());
pstmt.executeUpdate();
closeConnection();
} catch (SQLException e) {
// Handle Exception
}
}
ユーザーが重複レコードを挿入しようとすると、catchブロックがトリガーされます。私が心配しているのは、これがパフォーマンスのヒットを意味するのかどうかわからないということです。顧客がすでに存在するかどうかを確認するためのより良い方法ではありませんか?何かのようなもの:
public void saveCustomer(Customer c) {
getConnection();
boolean exists = false;
CallableStatement pstmt = con.prepareCall("{call sp_checkCustomerExistence(?,?)}");
pstmt.setString(1, c.getName());
pstmt.setString(2, a.getLastName());
ResultSet rs = pstmt.executeQuery();
if (rs.next()) exists = true;
if ( exists ){
closeConnection();
return;
}
CallableStatement pstmt = con.prepareCall("{call sp_saveCustomer(?,?)}");
pstmt.setString(1, c.getName());
pstmt.setString(2, a.getLastName());
pstmt.executeUpdate();
closeConnection();
}
最高のパフォーマンスに基づいた最良のソリューションは何でしょうか?顧客が存在するかどうかを自分で確認する必要がありますか、それとも例外をスローさせる必要がありますか?