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.
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)