Я не знаю какого-либо особого способа сделать это, когда вы действительно не знаете заранее, является ли это созданием или обновлением. Конечно, нет специального синтаксиса SQL, который мог бы сделать это эффективно (*), поэтому любая предоставленная реализация по существу будет делать то же самое, что и ваш код.
(*: ну, в MySQL есть механизмы ON DUPLICATE KEY UPDATE и REPLACE, но они запускаются при любом совпадении UNIQUE-ключа, а не только с первичным ключом, что может быть немного опасно; а в Oracle есть MERGE безобразно как грех Заявление. Но это нестандартные расширения, которые SQLObject не может использовать.)