Pre-compilado, o q significa?

O que significa dizer q um objeto eh pre-compilado, como no caso de PreperadStatment? Como isso funciona?

Tanto Statement quanto preparedStatement são objetos usados para executar instruções SQL

A diferença de um para o outro é que PreparedStatement aceita uma instrução precompilada.

Essa instrução é passada como parametro e armazenada no objeto preparedStatement.

try{ // sql a ser compilado/executado sql.append("INSERT INTO USUARIO (nome, sobre_nome)"); sql.append(" VALUES (?, ?)"); // o objeto de conexão compila a instrução e // armazena em um objeto PreparedStatement e // retorna uma referência a ser usada futuramente PreparedStatement ps = conexao.prepareStatement(sql.toString()); ps.setString(1, "Karen");// primeiro parametro de entrada/String ps.setString(2, "Barbatto");// segundo parametro de entrada/String ps.executeUpdate(); // executa o sql }catch(SQLException sqle){ sqle.printStackTrace(); }

Ahhhh pra ficar mais claro, mostrei em forma de código o que significa instrução pre compilada.

Agora olha a diferença entre Statement para PreparedStatement

try{ // o objeto de conexão retorna uma referência de um objeto do tipo // Statement a ser usada para armazenar e executar a instrução // SQL Statement stmt = conexao.createStatement(); // sql a ser compilado/executado stmt.addBatch("INSERT INTO USUARIO (nome, sobre_nome)"); stmt.addBatch(" VALUES ('Karen', 'Barbatto')"); stmt.executeBatch(); // executa o sql }catch(SQLException sqle){ sqle.printStackTrace(); }

Conseguiu ver porque PreparedStatement é precompilado?