Se han mejorado las funcionalidades de las clases JDBC PreparedStatement y CallableStatement. Los cambios son:
- PreparedStatement: permite añadir expresiones EL a las consultas para obtener valores. Permite establecer parámetros mediante el nombre.
- CallableStatement: permite añadir expresiones EL a las consultas para obtener valores. Poder usar parámetros mediante el nombre, ya era una funcionalidad que tenia.
- Otra mejora que incluye también a al tipo Statement, es que al cerrar la conexión que creo las tres variantes de Statement, se cierran automáticamente los Statments y ResultSet abiertos.
Para poder usar las expresiones EL, no hay que hacer ningún cambio a la hora de utilizar los tipos PreparedStatement y CallableStatement.
PreparedStatement stm = connection.prepareStatement("SELECT * FROM DUAL WHERE #{pruebaJpaIdentityService.one} = 1");
Pero para poder establecer los parámetro mediante el nombre en los PreparedStatement, si hay que hacer una pequeña modificación, usando la interface NamedParameterPreparedStatement. Veamos un ejemplo:
NamedParameterPreparedStatement stm = (NamedParameterPreparedStatement) connection.prepareStatement("SELECT * FROM DUAL WHERE :param = 2");
stm.setInt("param", 2);
También podemos convertir un PreparedStatement en un NamedParameterPreparedStatement mediante la función:
public static NamedParameterPreparedStatement org.jboss.seam.util.JDBC.getNamedParameterPreparedStatement(PreparedStatement preparedStatement)