Spring Data JPA
的极度简便的使用方式让我们爱不释手,但是我们在项目中经常会有使用空间数据的场景,而不同的数据库对空间数据实现的方式不同,而这些不仅是JPA
或者Spring Data JPA
都是不支持的这时我们需要引入hibernate-spatial
来去除数据库支持的异构性。
在本例中集成了Spring Data JPA
、hibernate -spatial
、PostGIS
一起的使用方式。
1. 添加依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.2.10.Final</version>
</dependency>
2. 数据库方言指定
spring.jpa.database-platform: org.hibernate.spatial.dialect.postgis.PostgisPG9Dialect
org.hibernate.spatial.dialect
下还有h2
,mysql
,oracle
,sqlserver
的方言。
3. 属性映射
@Column(columnDefinition = "geometry(Point,4326)")
private Point point;
4. 定义Spring Data Repository
public interface CityRepository extends JpaRepository<City,Long> {
@Query("select city from City as city where equals(city.point,:point) = TRUE")
List<City> findByPoint(@Param("point") Point point);
}
5. 保存测试
@Bean
CommandLineRunner geometrySave(CityRepository cityRepository){
return e ->{
City city = new City();
city.setName("合肥");
Geometry point = wktReader().read("POINT (117.2 31.8)");
Point pointToSave = point.getInteriorPoint();
pointToSave.setSRID(4326);
city.setPoint(pointToSave);
cityRepository.save(city);
};
}
6. 读取测试
@Bean
CommandLineRunner geometryRead(CityRepository cityRepository){
return e -> {
City city = cityRepository.findOne(3l);
Point point = city.getPoint();
log.info("经度:" + point.getX() + " 维度:" + point.getY() + " 坐标系统:" + point.getSRID());
};
}
7. 查询测试
@Bean
CommandLineRunner geometryQuery(CityRepository cityRepository){
return e -> {
Geometry point = wktReader().read("POINT (117.2 31.8)");
Point pointToQuery = point.getInteriorPoint();
pointToQuery.setSRID(4326);
List<City> cities = cityRepository.findByPoint(pointToQuery);
for (City city : cities) {
log.info("查询结果为:" + city.getId() + "/" +city.getName() + "/" +city.getPoint());
}
};
}
我们在cityRepository
中使用了hibernate-spatial
中的空间函数equals
,具体空间函数列表请查看
http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#spatial-configuration-dialect
8 源码地址
http://www.wisely.top/2017/06/26/hibernate-spatial-spring-data-jpa/
相关推荐
例如,可以创建一个Repository接口,声明一个返回所有位于特定区域内的地理对象的方法,Spring Data JPA会自动生成相应的SQL语句,其中包含Spatial函数,利用PostGIS的能力执行空间查询。 【应用场景】 这样的组合...
http://mvnrepository.com/找不到的hibernate-spatial-4.3.jar................................................
Hibernate Spatial 是一个基于 Hibernate 或 JPA 的空间几何对象数据库操作框架,提供了实现空间几何对象数据库操作的方法和配置说明。 一、 Hibernate Spatial 4 简介 Hibernate Spatial 4 是 Hibernate Spatial ...
hibernate-spatial-1.0-M2.jar无法自动下载,需手动下载后添加
**Hibernate Spatial**是针对地理空间数据处理的一个强大扩展库,主要用于支持在多种不同的数据库系统中进行地理数据的操作与管理。通过提供一套标准化接口,该框架使得开发者能够以统一的方式处理地理信息,而无需...
总结,Hibernate 5.2.10.Final版本不仅提供了基本的ORM功能,还在OSGi支持、JPA元模型生成、审计日志、地理空间数据处理以及Java 8 Optional接口的使用等方面进行了强化。这些特性使得该版本在企业级应用中表现出更...
Hibernate-Spatial-5-Sample 该代码取自本教程 ,这是Hibernate Spatial 4的教程,但我改编了Hibernate Spatial 5和MySQL数据库的代码和配置。 。 用作程序参数: 为了保存名为My title的事件,将日期和时间设置...
赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial-6.6.0.jar; 赠送原API文档:lucene-spatial-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-6.6.0.pom; 包含翻译后的API...
赠送jar包:lucene-spatial-extras-7.2.1.jar; 赠送原API文档:lucene-spatial-extras-7.2.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial-extras-6.6.0.jar; 赠送原API文档:lucene-spatial-extras-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial3d-6.6.0.jar; 赠送原API文档:lucene-spatial3d-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial3d-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial3d-6.6.0.pom; 包含...
赠送jar包:lucene-spatial3d-7.3.1.jar; 赠送原API文档:lucene-spatial3d-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial3d-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial3d-7.3.1.pom; 包含...
对于开发人员来说,`scikit-spatial-1.2.0.tar.gz` 包含的源代码可以让他们深入了解库的实现细节,便于自定义修改或扩展功能。如果遇到问题,可以通过阅读文档、查看示例代码,或者参考源码来解决问题。同时,也可以...
3D-3d-spatial-data.zip,指向三维空间(gis)数据的链接列表,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。
数据库中对于空间分析的支持mysql;JTS( java Topology Suite)字面上理解就是空间拓扑的意思。hibernate-spatial则是pojo的映射,hibernate-spatial-mysql-1.1.1.jar这是对于mysql专门的空间支持。
这个库被命名为"mathnet-spatial-master",暗示它是项目的主要分支或最新版本。下面将详细介绍这个库的关键特性、用途以及相关知识点。 1. **平面几何基础**:平面几何是数学的一个分支,主要研究二维空间中的形状...
其中,“空间信息基础设施”(Spatial Data Infrastructure, SDI)是指一套集成的空间数据资源和服务系统,能够支持空间数据的共享、交换和利用。“空间语义网”则是指基于语义网技术的空间数据网络,它不仅关注空间...
01-Spatial China Seminar-Spatial公司简介-Kochi.pps01-Spatial China Seminar-Spatial公司简介-Kochi.pps01-Spatial China Seminar-Spatial公司简介-Kochi.pps