`
wiselyman
  • 浏览: 2080195 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
Group-logo
点睛Spring4.1
浏览量:81031
74ae1471-94c5-3ae2-b227-779326b57435
点睛Spring MVC4...
浏览量:130111
社区版块
存档分类
最新评论

利用hibernate-spatial让Spring Data JPA支持空间数据

 
阅读更多

Spring Data JPA的极度简便的使用方式让我们爱不释手,但是我们在项目中经常会有使用空间数据的场景,而不同的数据库对空间数据实现的方式不同,而这些不仅是JPA或者Spring Data JPA都是不支持的这时我们需要引入hibernate-spatial来去除数据库支持的异构性。
在本例中集成了Spring Data JPAhibernate -spatialPostGIS一起的使用方式。

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/

1
1
分享到:
评论

相关推荐

    spring-gis:Spring Data JPA、Hibernate Spatial、Postgis

    spring-gis Spring Data JPA、Hibernate Spatial、Postgis

    hibernate-spatial-4.3

    http://mvnrepository.com/找不到的hibernate-spatial-4.3.jar................................................

    hibernate-spatial-1.0-M2.jar

    hibernate-spatial-1.0-M2.jar无法自动下载,需手动下载后添加

    Hibernate-Spatial-5-Sample:Hibernate Spatial 5基础教程之后的代码示例

    Hibernate-Spatial-5-Sample 该代码取自本教程 ,这是Hibernate Spatial 4的教程,但我改编了Hibernate Spatial 5和MySQL数据库的代码和配置。 。 用作程序参数: 为了保存名为My title的事件,将日期和时间设置...

    lucene-spatial-extras-7.3.1-API文档-中英对照版.zip

    赠送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...

    lucene-spatial-6.6.0-API文档-中文版.zip

    赠送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...

    lucene-spatial-extras-7.2.1-API文档-中英对照版.zip

    赠送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...

    lucene-spatial-extras-6.6.0-API文档-中英对照版.zip

    赠送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...

    lucene-spatial3d-6.6.0-API文档-中文版.zip

    赠送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; 包含...

    lucene-spatial3d-7.3.1-API文档-中英对照版.zip

    赠送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; 包含...

    3D-3d-spatial-data.zip

    3D-3d-spatial-data.zip,指向三维空间(gis)数据的链接列表,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。

    HibernateSpatial 可以运行的小例子

    数据库中对于空间分析的支持mysql;JTS( java Topology Suite)字面上理解就是空间拓扑的意思。hibernate-spatial则是pojo的映射,hibernate-spatial-mysql-1.1.1.jar这是对于mysql专门的空间支持。

    Hibernate Spatial 4 教程

    《Hibernate Spatail 教程》是为Hibernate或JPA实现对空间几何对象的数据库操作提供方法和配置说明。

    01-Spatial China Seminar-Spatial公司简介-Kochi.pps

    01-Spatial China Seminar-Spatial公司简介-Kochi.pps01-Spatial China Seminar-Spatial公司简介-Kochi.pps01-Spatial China Seminar-Spatial公司简介-Kochi.pps

    lucene-spatial-4.9.0.jar

    lucene-spatial-4.9.0.jar

    lucene-spatial-6.6.0-API文档-中英对照版.zip

    赠送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...

    MySQL练习数据-Sakilia-spatial DB

    MySQL练习数据-Sakilia-spatial DB,支持MySQL5.6~8 sakila-mv-data.sql sakila-mv-schema.sql Sakila 数据库提供了以下数据表: actor,演员信息表。通过 film_actor 表和 film 表进行关联。 film,电影信息表。...

    lucene-spatial-extras-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-spatial-extras-7.7.0.jar; 赠送原API文档:lucene-spatial-extras-7.7.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...

    lucene-spatial-extras-7.2.1-API文档-中文版.zip

    赠送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...

    lucene-spatial-extras-7.3.1-API文档-中文版.zip

    赠送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...

Global site tag (gtag.js) - Google Analytics