hibernate spatial实体类处理空间数据
由于涉及地图操作,框架使用的hibernate, 以前都是使用原生sql来实现增删改查,方便性很高,但是每次都要写sql,失去了hibernate的优势,最近发现hibernate有个处理空间数据的jar包—hibernate-spatial,记录一下hibernate使用空间字段的基础方法.
1.环境 数据库postgres9.5 空间扩展postgis2.1
方言,官网建议postgis1.3以上使用这个方言
database-platform: org.hibernate.spatial.dialect.postgis.PostgisDialect
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.4.0.Final</version>
</dependency>
2.新建实体类Entity ,使用空间字段,以point为例
注意使用下边这个包,(最新jar包已经弃用com.vividsolutions.jts.geom.Point )
import org.geolatte.geom.Point;
数据库空间字段为shape,指定point类型和坐标系
@Column(columnDefinition = "geometry(Point,4326)")
private Point shape;
配置好空间字段之后,查询功能和之前一样就行.
3.新增功能
point对象需要通过fromWkt方法来获取,参数为wkt格式字符串,如果需要修改坐标系,则需要在前边拼接起来,用分号隔开.
Entity entity = new Entity();
String pointStr1 = "SRID=4326;point(115 35)";
String pointStr2 = "point(115 35)";
Point point = (Point) Wkt.fromWkt(pointStr);
if (point != null) {
entity.setShape(point);
}
将获得的point字段赋值给entity,然后使用hibernate save方法即可.
plus : com.vividsolutions.jts.geom.已经被弃用,现在网上搜到的大多是这个类的用法,要认准org.geolatte.geom.;
转载自:https://blog.csdn.net/linzi19900517/article/details/85258517