よろしくお願いします。

Win2003 + Java + struts + spring + JDBC + Oracleでのシステムなのですが
不可思議な動きをして困っています。

例えばIDがユニークキーとなるテーブルがあったとして

//テーブルに該当するIDがあれば削除する。;
List ret = DBSearch.search(id);
if(ret != null || ret.isEmpty){
DBDelete del = new DBDelete();
del.delete(id);
}
//テーブルにレコードをinsert
DBInsert ins = new DBInsert();
ins.insert(id);

のようなロジックを組んで、実際にサーバ上で走らせてみるとDBのユニークキーエラーが出たり出なかったりします。
一度エラーが出ても、もう一回同じ処理を走らせると正常終了したりします。

どこかで「Javaのvoiのvoidは戻り値がないため、関数を呼び出したらその終了を待たずに次の処理に行く」
と言う話を聞いたことがありまして、
もしそうなら上記のdel.delete(id)よりも先にins.insert(id)が走ってしまい、ユニークキーエラーになるのかな
と思い御相談させていただきました。


「Javaのvoid関数は戻り値がないため、関数を呼び出したらその終了を待たずに次の処理に行く」
というのは本当でしょうか。?

意味がなくてもbooleanやlongなどの戻り値をつけたほうが良いのでしょうか??