Pregunta

¿Alguien tiene alguna experiencia con la creación de aplicaciones agnósticas de bases de datos en Java, especialmente con Hibernate, y al mismo tiempo la orientación bases de datos Oracle y Postgres?

En particular, estoy mirando a Oracle Spatial y PostGIS. Queremos crear una SOA basada en Java que se puede utilizar con ambos extremos de Oracle Spatial y PostGIS espalda. He usado Hibernate con estas dos bases de datos, pero nunca con la intención de dirigirse a ambos. Puedo crear escenarios en los que el mismo código puede generar resultados diferentes dependiendo de qué se utiliza la base de datos.

Es tal vez que Hibernate puede manejar esto, pero sería bueno saber si hay algún problema conocido.

Ken

¿Fue útil?

Solución

junto con hibernación i puedo recomendar Hibernate espacial , una extensión que soporta Mysql, Oracle y Postgre, con sus respectivas extensiones SIG.

algunas de las dificultades que encontré:

tenga en cuenta, la configuración de los dialectos no era trivial para hacerlo correctamente. asegurarse de que los dialectos no se reconfiguran para cada declaración, ya que me ha pasado.

dependiendo de las características de hibernatespatial utiliza es posible que se encerrado en el número de versión específica de hibernación

puede utilizar la API de criterios SOLAMENTE, HQL no se admite directamente.

mi código utilizando hibernatespatial se ve así:

  if (query.getMaxDistance() != null && query.getCenter() != null) {
        basicCriteria.add(SpatialRestrictions.within("coordinate", GeoidCircleFactory.circle(query.getCenter(), query.getMaxDistance())));
    }

usted sufre de algunas de las limitaciones es muy extrema PostGIS y otros están bajo. Yo recomendaría para relajarse un poco de su aplicación tiene que ajustarse mejor a las posibilidades de su base de datos. por ejemplo, las consultas en el "espacio angular" son mucho más fáciles de hacer que en "el espacio euclidiano".

el código contenida en GeoidCircleFactory parece bastante miedo ...:)?

Otros consejos

Además de utilizar dialectos hiberna usted querrá una herramienta de gestión de base de datos como la creación Liquibase que permitirá la creación código para ser abstraído lejos de la sintaxis específica de las diferentes bases de datos.

Hibernate asas que apuntan a diferentes bases de datos utilizando su abstracción dialecto . No es necesario hacer ningún cambio en su propia aplicación únicamente la configuración de hibernación para cada base de datos.

Puede especificar en la configuración del dialecto para usar con su base de datos o dejar que Hibernate utilice la configuración del controlador JDBC para determinar el dialecto apropiado.

Tras el comentario recibidos, ¿has mirado en Hibernate Spacial ? Es una extensión de hibernar para apoyar los datos geográficos proporcionando los tipos y dialectos Hibernate necesarias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top