Question

Quelqu'un at-il une expérience avec la base de données la création d'applications agnostiques en Java, en particulier avec Hibernate, et le ciblage en même temps les bases de données Oracle et Postgres?

En particulier, je suis à la recherche d'Oracle Spatial et PostGIS. Nous voulons créer un Java SOA qui peut être utilisé à la fois Oracle Spatial et PostGIS extrémités arrière. Je l'ai utilisé Hibernate avec ces deux bases de données, mais jamais avec l'intention de cibler les deux. Je peux créer des scénarios où le même code peut générer des résultats différents en fonction de la base de données est utilisée.

Il se peut que mise en veille prolongée peut gérer cela, mais ce serait bien d'entendre s'il y a des problèmes connus.

Ken

Était-ce utile?

La solution

avec mise en veille prolongée i recommande Hibernate Spatial , un prolongement qui supporte Mysql, Oracle et Postgre avec leurs extensions respectives SIG.

i quelques pièges rencontrés:

soit au courant, la configuration des dialectes n'était pas trivial de le faire correctement. assurez-vous que les dialectes ne sont pas reconfigurés pour chaque déclaration, comme il est arrivé à moi.

en fonction des caractéristiques de hibernatespatial que vous utilisez, vous risquez d'être verrouillé sur un numéro de version spécifique de mise en veille prolongée

vous pouvez utiliser l'api seul critère, hql ne sont pas directement pris en charge.

mon code à l'aide hibernatespatial ressemble à ceci:

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

vous souffrez d'une partie des contraintes tout à fait dire PostGIS et d'autres sont sous. Je recommande de se détendre un peu de votre application a besoin de mieux adapter les possibilités de votre base de données. par exemple, les requêtes dans « l'espace d'angle » sont beaucoup plus faciles à faire que dans « l'espace euclidien ».

le code contenu dans GeoidCircleFactory semble assez effrayant ...:)

Autres conseils

En plus d'utiliser les dialectes et hiberne vous voulez un outil de gestion de création de base de données comme Liquibase qui permettra la création code à abstraire loin de la syntaxe spécifique des différentes bases de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top