Just to note, if you use Oracle9 and are looking to insert a very large number of rows, then neither the default solution nor using CallableStatement and RETURNING clause are particularly good.
The default of select seqName.nextval from dual; prior to every insert obviously incurs the additional select for every row inserted.
CallableStatement is not batchable according to the Oracle documentation and so using the RETURNING clause removes the additional select but doesn't allow acutal statement batching.
The solution I would recommend for Oracle9 users doing a large number of inserts is to use UpdateSql... and put the seqname.nextval in the actual sql.
Obviously this is not an ORM way of doing things, but its unlikely that you want the 'beans' back after insert to later on perform an update. Certainly this is likely the most performant way to do this apart from using raw JDBC.