Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Contact logo Contact Us
GET A DEMO

Usar Procedimientos Almacenados

Necesidad

Se requiere utilizar procedimientos almacenados desde una aplicación Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se tiene una aplicación en Java que ejecuta sentencias en una base de datos relacional.

  2. El motor de la base de datos relacional soporta la creación de procedimientos almacenados o funciones personales.

Solución

A través de los años, las bases de datos han sido una herramienta de uso indispensable para cualquier organización y/o empresa, ya que estas permiten recopilar y almacenar información casi de cualquier tipo. Eso sí, dicha información es almacenada de una forma organizada y centralizada de tal manera que permitan una administración sencilla de la misma.

Entonces, como las bases de datos suelen manejar toda la información de una organización, se hace obligatorio que la creación, acceso y mantenimiento de las mismas se haga de la manera más segura posible.

Por lo tanto, los procedimientos almacenados son un conjunto de comandos que pueden ser ejecutados directamente en el servidor de base de datos en vez de ser ejecutados por un programa externo. En ese orden de ideas, los procedimientos almacenados se guardan dentro de la misma base de datos a la cual están accediendo, por lo que son un objeto más de la base de datos.

En general, los procedimientos almacenados tienden a ser usados con el fin de preservar la integridad de la información almacenada. Además, como los comandos son ejecutados dentro del mismo servidor, el tráfico de red se ve ampliamente reducido. porque únicamente el cliente está enviando al servidor la llamada que va a ejecutar el procedimiento almacenado en vez de enviar infinidad de consultas SQL que podrían retrasar el funcionamiento de la misma aplicación.

Por otro lado, los procedimientos almacenados controlan qué procesos y actividades se llevan a cabo. Lo anterior permite eliminar la necesidad de conceder permisos en cada nivel de objetos logrando una mayor seguridad de forma más simple y sencilla.

También, el uso de procedimientos almacenados traduce en aplicaciones más manejables y, en la mayoría de las ocasiones, más óptimas.

  1. El siguiente código es un ejemplo de muestra de como se puede crear un procedimiento almacenado.

    procedure.sql
    1
    2
    3
    4
    5
    6
    create procedure set_death_age(poet VARCHAR2, poet_age NUMBER)
      poet_id NUMBER;
    begin
      SELECT id INTO poet_id FROM poets WHERE name = poet;
      INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age);
    end set_death_age;
    
  2. La siguiente clase de Java, enseña la manera de acceder a los datos almacenados en la base de datos usando el procedimiento almacenado creado previamente.

    procedure.java
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public static void setDeathAge(Poet dyingBard, int age) throws SQLException {
      Connection con = null;
      CallableStatement proc = null;
      try {
        con = connectionPool.getConnection();
        proc = con.prepareCall("{ call set_death_age(?, ?) }");
        proc.setString(1, dyingBard.getName());
        proc.setInt(2, age);
        proc.execute();
      }
      finally {
        try {
          proc.close();
        }
        catch (SQLException e) {
          // code for trying the exception
        }
        con.close();
      }
    }
    

Service status - Terms of Use