2012-03-06 17 views
11

Actualmente estoy trabajando en una aplicación de portal para un restaurante. La base de datos back-end utilizada es Mysql y estoy usando Spring JDBC para escribir lógica de acceso a datos.¿Cómo crear procedimientos temporales en MySQL?

Algunos de mis DAO están llenos de múltiples consultas y están obteniendo hasta mil líneas de código de tamaño. Creo que puedo reducir el tamaño y la complejidad al mover parte de mi lógica en un procedimiento SQL-PSM (ya que el enlace de datos y el código de pegamento en Java es una abominación del infierno).

Sin embargo, no tengo derechos DDL en el Db y, por lo tanto, no puedo crear el procedimiento.

Me preguntaba si hay una forma de crear un procedimiento descartable \ temporary que pueda ejecutar directamente como una declaración DML sin tener que crearla primero.

es decir, quiero un procedimiento menos la palabra clave crear, que haría mi trabajo, devolver el resultado y desaparecer.

Lo busqué mucho en Google pero no pude encontrar nada. : '(Me pregunto si ustedes conocen una solución elegante.

+1

Ni siquiera tengo una opinión al permitir PSM en Db, y mucho menos lograr que el equipo adopte un ORM. :-(He decidido reducir la complejidad por otros medios, como la externalización de mis consultas en archivos de configuración de Spring por separado, etc. De todos modos, gracias por todas las respuestas. :-) –

+0

¿Ha intentado ejecutar sentencias SQL desde un archivo de texto [link] (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html) –

Respuesta

11

supongo que busca bloques de código anónimo/procedimientos anónimos. por desgracia, no se soporta MySQL (que se apoya en los RDBMS "grande" como Oracle o Sybase)

Consideraría utilizar algún marco ORM, pero no soy desarrollador de Java, así que no puedo recomendar ninguno.

+0

¡Exactamente! Bloques de código anónimo. Es triste escuchar que mysql no tiene soporte para ellos ... :-(No sé qué hacer con mis espaguetis DAOs. –

+1

Todavía puede usar procedimientos regulares para hacer parte del trabajo, si puede crearlos de antemano. – Salandur

2

No creo que pueda. Mi recomendación sería crear el "procedimiento almacenado" en Java. Escribir un método que tome sus entradas, realice consultas y cálculos, a continuación, devuelve el conjunto de datos.

+0

Ese no es el problema. Ya tengo código de trabajo en Java. El punto es que Java no puede competir con SQL-PSM cuando se trata de manipulación de datos en tablas relacionales. El código puede reducirse a la mitad de su tamaño. –

+0

@MonikaMichael Todavía puede hacer la manipulación de datos en el lado de DB ejecutando consultas, ¿no? Simplemente envuelva las consultas en un método Java en lugar de un MySQL SP. No sé mucho sobre el JDBC que está utilizando, pero cualquier abstracción de base de datos moderna debería incluir compatibilidad con múltiples consultas. –

Cuestiones relacionadas