Bienvenida

Como todo en la vida, la innovación es la clave del éxito por lo que nos hemos visto en la necesidad de "evolucionar" este blog para abarcar muchos otros temas que estaban quedando de lado en nuestros cursos "oficiales".

Si deseas aprender o profundizar algunos temas en particular, no dudes en contactarnos.


martes, 24 de mayo de 2011

JPA : Store Procedures y demás hierbas


Anoche estuve jugando Operation7 hasta tarde ( es parecido a Counter Strike o a Combat Arms hasta que banearon a todo latinoamerica porque nuestras redes son lentas ). Entonces, para no aburrirme ahora  y que me de sueño ( pese a los cafes del Starbucks ! ) , debo mantener mi CPU en actividad.

En este post hablaré sobre JPA y los famosos Store Procedures que muchos han estado preguntando. Aunque hay una discusión acerca de si la base de datos debe tener lógica de negocio o no, lo cierto es que al colocar store procedures en el motor, la portabilidad del sistema se echa por la borda: todos los códigos SPL no son iguales y por tanto hay que invertir tiempo en adecuarlos.

Particularmente prefiero que cada cosa cumpla la función para la que fue creada : Base de datos para datos y servidor de aplicaciones para lógica de negocio. Pero a veces en situaciones reales, donde mandan capitanes no gobiernan marineros.

No recuerdo de donde obtuve este código de una función MySQL de ejemplo ( pero reconozco que el código no es mío por tanto no aseguro que funcione bien ... solo lo tomo como ejemplo ). Lo que hace es calcular la diferencia de dos fechas.


Ahora el fragmento de programa main que ejecuta el código usando JPA. En el persistence.xml no será necesario colocar la definición de entidades (si es que no las usamos ).


Observen que al tratarse de una función, se usa un .getSingleResult.
pero si se tratase de un Procedure que hace alguna operación, hay que hacer un .executeUpdate. Es más, requerirá colocarlo dentro de una transacción.

Observa tambien que al entity manager se le dice createNativeQuery  y que la sintaxis que va dentro ( el comando a ejecutar ) dependerá del motor de base de datos que usemos.

La forma de "setear" los parámetros lo veremos en la semana 6 aunque puedes ir revisando el manual impreso.

¿ Que te pareció ? Opina y/o comenta.
Prueba otras formas.

Saludos.

7 comentarios:

  1. en cuanto a la rapidez de respuesta de una consulta x, que opción sería la más óptima, utilizar OneToOne o un procedure ?

    ResponderEliminar
  2. La rpta siempre es depende
    En el OneToOne si usas EAGER o LAZY y cuanta data estas jalando
    En el procedure depende de la carga de la BD o de la concurrencia sobre la tabla de procedures ( en informix por ejemplo la sysprocplan ) ....

    ResponderEliminar
  3. mas optimo es usar DATAWAREHOUSE XP

    ResponderEliminar
  4. Como se trabaja con un datawarehaouse, se le trata como una BD normal? Porque hasta ahora lo unico que hicimos es crear las DW.

    ResponderEliminar
  5. Aunque el tema esta fuera del contexto del Post, te explico:
    1) Los sistemas normales son OLTP ( On-Line Transaction Processing ) es decir, sistemas que capturan datos básicamente y los almacenan en bases de datos ( RDBMS ) relacionales ( aunque algunos bancos usan archivos VSAM aun ).
    2) Cuando aparece el concepto de "almacen de datos" o DataWarehouse, ya existia la idea de los sistemas OLAP ( On-Line Analytical Process ) que eran basicamente procesos que se ejecutaban en la Base de datos para generar reportes "gerenciales" que los Gerentes NUNCA leian.
    3) Viene la moda del DWH y con ello las fases de extraccion de datos de diversas fuentes, limpieza de los datos ( acuerdate que los OLPT pueden capturar data inconsistente entre si ...ejemplo el mismo cliente con direcciones diferentes en distintos modulos del sistema), de ahi sigue la fase de carga en el manejador de Base de Datos del DWH ( que si bien es un relacional, las tablas dejan de lado las formas normales ( 1era, 2da, 3ra forma normal ) es decir, ahora hay data duplicada por todos lados con el fin de que los queries sean más rápidos ( contradicción ... porque necesito mayor espacio en disco y más potencia de máquina )
    4) Para explotar partes del DWH surgen los "modelos estrella" o DATAMARTS que contienen dimensiones de analisis sobre un tema especifico. Hay herramientas para eso ( la mas simple es Excel ).

    Espero haber resuelto la duda. En todo caso, consulta con el profesor de Inteligencia de Negocios o de Base de Datos para mayor detalle y referencia.

    Saludos

    ResponderEliminar