private PreparedStatement createStatement() throws SQLException{
listeners.preRender(context);
SQLSerializer serializer = createSerializer();
serializer.serializeUpdate(metadata, entity, updates);
queryString = serializer.toString();
constants = serializer.getConstants();
logQuery(logger, queryString, constants);
context.addSQL(queryString);
listeners.prepared(context);
listeners.prePrepare(context);
PreparedStatement stmt = connection.prepareStatement(queryString);
setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams());
context.addPreparedStatement(stmt);
listeners.prepared(context);
return stmt;
}