Hola David,
En Java, la mejor práctica para prevenir la inyección de SQL es utilizar consultas preparadas (PreparedStatement). Las consultas preparadas permiten a los desarrolladores escribir consultas SQL con marcadores de posición para los valores que se insertarán, en lugar de tener que concatenar los valores en la consulta. De esta manera, la base de datos puede distinguir entre la consulta SQL y los datos, lo que evita que los datos se interpreten como parte de la consulta SQL.
Por ejemplo, en lugar de hacer algo como esto:
String nombre = "David";
String sql = "SELECT * FROM usuarios WHERE nombre = " + nombre;
Statement stmt = conexion.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Deberías hacer algo como esto:
String nombre = "David";
String sql = "SELECT * FROM usuarios WHERE nombre = ?";
PreparedStatement pstmt = conexion.prepareStatement(sql);
pstmt.setString(1, nombre);
ResultSet rs = pstmt.executeQuery();
En el segundo ejemplo, incluso si el nombre contiene caracteres que podrían alterar la consulta SQL (como una comilla simple), la base de datos no los interpretará como parte de la consulta SQL.
Para más información sobre las consultas preparadas en Java, te recomiendo que consultes la documentación oficial de Oracle: Prepared Statements
Espero haber ayudado. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.
¡Vamos juntos!
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios