H2 tiene un rango de compatibility modes para varias otras bases de datos como MS SQL Server, MySQL, Oracle, etc. que admiten dialectos SQL diferentes. Sin embargo, al configurar un embedded database en Spring, no encuentro ninguna configuración correspondiente. ¿Esto implica que tengo que usar SQL "simple" sin características específicas de dialecto si, por ejemplo, uso Oracle en producción y H2 durante la prueba? ¿He pasado por alto algo?¿La base de datos incrustada de Spring admite dialectos SQL diferentes?
Respuesta
Según el H2 doc, el modo de compatibilidad de Oracle es bastante limitado.
Por ejemplo, no puede usar procedimientos PL/SQL.
Si usa Spring's EmbeddedDatabase, no puede establecer el modo de compatibilidad tal como está; tiene que implementar su propio EmbeddedDatabaseConfigurer y especificar el modo de compatibilidad a través de la URL JDBC (ver a continuación).
Pero también, para utilizar el modo de compatibilidad con H2 y la primavera, sólo hay que ajustar el modo en que su URL de JDBC (por lo que no es la primavera relacionado) de una manera clásica, utilizando una fuente de datos:
jdbc:h2:~/test;MODE=Oracle
Y si usa Hibernate, debe especificar el dialecto de Oracle en lugar del H2.
¿qué versión de la base de datos H2? por la documentación, se puede establecer el modo de compatibilidad de SQL (http://www.h2database.com/html/features.html#compatibility)
SET MODE PostgreSQL
sólo tiene que añadir esta declaración en su primer archivo de secuencia de comandos SQL cargado por JDBC primavera embebido en la base de datos
Tienes 2 opciones:
- uso de primavera para iniciar la base de datos H2 de la siguiente manera (marque setName() para ver cómo pasar parámetros de URL específica H2 a la primavera constructor):
código de primavera genera la URL de la siguiente manera:
String.Format ("jdbc: H2: mem:% s; DB_CLOSE_DELAY = -1", de databaseName)
Así, en setName() que pueda todo lo que cualquier Parámetro específico H2 en la URL.
private DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase db = builder
.setType(EmbeddedDatabaseType.H2)
.setName("testdb;DATABASE_TO_UPPER=false;MODE=Oracle")
.addScript("schema.sql")
.addScript("data.sql")
.build();
return db;
}
configure directamente la URL DB, algo así como:
org.h2.jdbcx.JdbcDataSource dataSource = new org.h2.jdbcx.JdbcDataSource(); dataSource.setURL ("jdbc: h2: testdb; MODE = MySQL; DATABASE_TO_UPPER = false; INIT = runscript desde 'src/test/resources/schema.sql' \; runscript desde 'src/test/resources/data.sql' ");
La principal diferente es que (2) es la ejecución de scripts definidos en INIT para cada conexión creación de bases de datos y no una vez por la creación DB! Esto causa varios problemas, como INSERT que falla debido a la duplicación de claves, etc.
- 1. Base de datos incrustada para la aplicación de Windows 8
- 2. ¿Cómo soltar la base de datos incrustada neo4j con java?
- 3. Restablecer la base de datos H2 incrustada periódicamente
- 4. Base de datos incrustada (Java pura) para Clojure
- 5. ¿Cuándo se llama una base de datos como base de datos incrustada?
- 6. ¿Qué base de datos incrustada tiene máxima compatibilidad con SQL y compatibilidad con concurrencia?
- 7. ¿Alguna base de datos admite la creación automática de índices?
- 8. ¿Por qué hay tantos dialectos de expresiones regulares diferentes?
- 9. Estructura de la base de datos SQL
- 10. Buscando orientación sobre la base de datos .NET incrustada (como db4o, NHibernate o RavenDB)
- 11. Base de datos SQL Azure usando SQL Server Management Studio
- 12. Sincronización entre la base de datos SQL Lite en un dispositivo android y la base de datos SQL Server
- 13. Diferencias entre la base de datos y el esquema utilizando diferentes bases de datos?
- 14. Mostrar datos de la base de datos SQL en Gridview
- 15. búsqueda de texto completo con la base de datos incrustada en Delphi
- 16. ¿La aplicación de estilo Metro de Windows 8 admite la base de datos local de SQL Server CE?
- 17. ¿Una base de datos incrustada no relacional con una licencia de software libre permisiva?
- 18. ¿Spring MessageSource admite ruta de clase múltiple?
- 19. Múltiples comandos transaccionales de SQL en diferentes conexiones de base de datos
- 20. Base de datos múltiple con Spring + Hibernate + JPA
- 21. ¿Quitar usuario de la base de datos de SQL Server?
- 22. ¿Hay SQL ALGUNOS y ALGUNOS sinónimos de palabras clave en todos los dialectos de SQL?
- 23. Can Spring Security admite múltiples puntos de entrada?
- 24. base de datos incrustada java w/capacidad de almacenar como un archivo
- 25. En la base de datos de memoria que admite la consulta espacial
- 26. Base de datos SQL para práctica de SQL
- 27. ¿Diferentes tipos de índices de base de datos?
- 28. Base de datos integrada para .net
- 29. Base de datos local sin servidor sql
- 30. Base de datos liviana (SQL o NoSQL)