Obtener el id auto incrementable después de un INSERT, para luego ingresar detalles en otra tabla utilizando JSP

Disculpen a todos, soy nuevo en esto de java y estoy realizando una aplicación web de pedidos.
Tengo una tabla Tab_Pedido y otra Tab_DetallePedido , entonces construi un formulario en el cual primero tengo que insertar el pedido y quiero recuperar ese id sin que se tome un id de otro posible insert para insertar detalles en la Tab_DetallePedido.
Esto lo quiero hacer utilizando java JSP..
Ahh estoy usando como gestor de Bdd Postgres

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

JDBC

Que uses JSP no nos dice nada, porque eso es una tecnología de vista nada más. Cómo haces tu acceso a base de datos?

Con JDBC (y cualquier cosa que use JDBC por debajo) es posible obtener las llaves autogeneradas de un INSERT. Y bueno, el driver JDBC de PostgreSQL por supuesto que soporta eso.

Yo lo he hecho con Spring JDBC y es bastante sencillo:

final GeneratedKeyHolder llavero = new GeneratedKeyHolder();
PreparedStatementCreator psc = //crear un PreparedStatementCreator
jdbc.update(psc, llavero);
//Suponiendo que la columna sea "clave"
int clave = ((Number)llavero.getKeys().get("clave")).intValue();

La respuesta de @ezamudio es

La respuesta de @ezamudio es buena. Pero creo que PreparedStatementCreator es parte de Spring.

En mi opinión Spring JdbcTemplate es una muy buena opción para usar bases de datos con Java, ya que tienes la flexibilidad de la OOP (aunque haces más código) sin perder la libertad de hacer consultas complejas.

Ahora, si el problema es que estás aprendiendo Java o que simplemente te es imposible usar Spring por cualquier cosa, aquí hay una respuesta muy buena para hacer eso con JDBC plano.

Por otra parte te recomendaría utilizar algo cómo Spring JdbcTemplate, mucho se ha hablado (en este y otros foros) que JDBC plano necesita de mucho detalle para cosas triviales (asegurarte que las conexiones se abren/cierra cuando se debe, principalmente). En mi caso me gusta la combinación de commons-dbcp con Spring JdbcTemplate, o también pudiera ser commons-dbcp con commons-dbutils.

Espero que te ayude.

¡Saludos!

Gracias JDBC

Para el acceso a la Bdd estoy usando JPA, como seria ahi???

Imagen de ezamudio

JPA

Por ahí hubieras empezado... JPA es lo de persistencia con anotaciones, no? como la versión "genérica" de hibernate? En JPA existe una anotación que le pones no recuerdo si a la entidad o al atributo de llave primaria.

10 segundos después... @GeneratedValue

http://stackoverflow.com/questions/1817625/jpa-primary-key-auto-generate

RE: JPA

Si, JPA es el estándar de Java para ORM.

Con esa anotación solo hay que ver algo y es la estrategia de cómo se genera el ID... en este caso creo que la respuesta en stackoverflow marcada cómo correcta lo menciona.