una tabla sistema registro mostrar modificar mediante llenar insertar imprimir eliminar desde datos con como busquedas buscar java sql version-control

tabla - mostrar datos en un combobox java mysql



¿Dónde debo colocar los archivos SQL en mi proyecto Java? (5)

Tengo un proyecto Java que incluirá una serie de declaraciones SQL grandes para consultar la base de datos. Mi pregunta es: ¿dónde debo guardarlos?

Estoy bastante seguro de que quiero que cada declaración tenga su propio archivo de texto administrado por el control del código fuente. Como Java no admite cadenas de líneas múltiples, no puedo colocar fácilmente el SQL en mis archivos .java y no creo que quiera hacerlo de todos modos. En el momento de la compilación, puedo colocar estos archivos de texto en JAR y obtener el contenido con ClassLoader.getResourceAsStream() .

Así que mi problema se convierte en qué directorios debo poner estos archivos y cómo debo llamarlos. Lo ideal es que la gente diga desde el archivo .sql qué clase de Java lo usa. Lo que definitivamente no quiero es un solo directorio lleno de muchos archivos llamados cosas como report1.sql y report3.sql y así sucesivamente.

Mi inclinación es ponerlos en el directorio del paquete con todos los archivos .java , pero tengo un colega que no le gusta tener nada más que los archivos .java en este árbol. Por lo tanto, esto conduce a la alternativa de una estructura de directorios separada que refleja los paquetes de Java, pero esto parece una sobrecarga innecesaria.

Por lo tanto, me gustaría escuchar lo que haces con tus archivos SQL.

Estamos usando Netbeans 6.5 en caso de que eso afecte sus respuestas.

( Esta pregunta es similar pero, lamentablemente, las respuestas son muy específicas de C #, lo que es bueno para esa pregunta pero malo para mí).


En una configuración de Java / Maven usamos como jerarquía de proyectos:

project/src/main/java/Package/Class.java project/src/test/java/Package/ClassTest.java project/src/main/resources/Package/resource.properties project/src/test/resources/Package/test_resource.properties

Y para responder a su pregunta: pondría los archivos SQL junto con los recursos en src / main / resources.

Es posible que desee echar un vistazo a este thread .


Estaría tentado de poner las consultas SQL en una carpeta de SQL dedicada bajo src. Esto separa el código de Java del SQL:

+ src + java + sql - Package/Class.sql + test

Alternativamente, puede colocarlos en archivos de propiedades simples usando la estructura anterior:

getUserByName = select * from users where name=? getUserByEmail = select * from users where email=? getUserByLongQuery = select * from users where email=? / and something = ? / where something_else = ?

Además, creo que vale la pena mencionar que puedes poner cadenas de varias líneas en una clase de Java si prefieres tomar esa ruta:

class MyClass { MY_QUERY = "select * from users where email = ? " + "and something_else = ?"; }


Este es un pequeño riff en la pregunta inicial, pero posiblemente más complejo sea el SQL cuanto más pertenece a la base de datos (o en una capa de servicios) y no en su código Java.

De lo contrario, a medida que el código madura, surgen problemas como este .


Estoy totalmente de acuerdo con boutta. Maven establece un buen estándar para la gestión de carpetas src. ¿Has considerado almacenar tu SQL en XML? Mantener las consultas en un solo archivo puede facilitar la administración del SQL. Mi primera intuición es algo simple:

<?xml version="1.0" encoding="UTF-8"?> <queries> <query id="getUserByName"> select * from users where name=? </query> <query id="getUserByEmail"> select * from users where email=? </query> </queries>

Para analizar el archivo, use xpath o incluso SAX para crear un mapa de consultas con clave por el id para búsquedas rápidas de consultas.


Para ser coherente con http://maven.apache.org/pom.html#Resources este lugar puede ser uno de los siguientes:

  • src/main/sql
  • src/main/upgrade - para scripts de actualización entre versiones
  • src/main/db , src/main/schema , src/main/ddl - para el esquema de base de datos del proyecto actual, para la implementación inicial del proyecto
  • etc, simplemente póngalo en el directorio src/main/NAME

Otras cosas a considerar:

Tenga en cuenta que IDE no admite directorios de escucha que no sean src/main/java y src/main/resources en el visor de proyectos , para eso use el visor de archivos .