Hibernate とともに、Mysql、Oracle、および Postgre をサポートする拡張機能であるHibernate Spatialと、それぞれの GIS 拡張機能をお勧めします。
私が遭遇したいくつかの落とし穴:
方言の構成を正しく行うのは簡単ではないことに注意してください。私に起こったように、すべてのステートメントに対して方言が再構成されないようにしてください。
使用する hibernatespatial の機能によっては、特定のバージョン番号の hibernate にロックインされる可能性があります
基準 API のみを使用できます。hql は直接サポートされていません。
hibernatespatial を使用した私のコードは次のようになります。
if (query.getMaxDistance() != null && query.getCenter() != null) {
basicCriteria.add(SpatialRestrictions.within("coordinate", GeoidCircleFactory.circle(query.getCenter(), query.getMaxDistance())));
}
postgis やその他の非常に悲惨な制約のいくつかに苦しむことになります。DB の可能性に合わせてアプリケーションのニーズを緩和することをお勧めします。たとえば、「角度空間」でのクエリは、「ユークリッド空間」でのクエリよりもはるかに簡単です。
GeoidCircleFactory に含まれるコードは非常に恐ろしく見えます... :)