HibernateSpatial4.3+postgresql的使用

来源:互联网 发布:华为的程序员 编辑:程序博客网 时间:2024/06/14 00:31

    SSH的整合参考的【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2这篇文章,写得非常细致,我参考并按照自身需求做了改动,实现通过HibernateSpatial使用postgis的ST_within(geometry A,geometry B)函数来查询polygon范围内的点。

现记录改动及自认重要之处,以备后时翻阅:

实例类里的几何类型:

@Type(type = "org.hibernate.spatial.GeometryType")private Point point;

实例类对应的**.hbm.xml:

 1.id自增

<id name="id" type="java.lang.Integer">            <column name="id" />            <generator class="sequence">            <param name="sequence">maps_id_seq</param>            </generator>        </id>

  2.几何字段及时间戳字段

<property name="point" type="org.hibernate.spatial.GeometryType">            <column name="point" />        </property>        <property name="time" type="java.sql.Timestamp">            <column name="time" length="29" />        </property>

查询几何范围内的点:

public List<Maps> queryByRange(Geometry geo) {String hql = "from Maps m where within(m.point,:filter) = true";Query query = getSession().createQuery(hql);query.setParameter("filter", geo);List<Maps> maps = query.list();return maps;}

bean.xml中连接池的配置:

<!-- 配置连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="org.postgresql.Driver"/><property name="jdbcUrl" value="jdbc:postgresql://192.168.3.211:5432/postgis"/><property name="user" value="postgres"/><property name="password" value="****"/></bean>
hibernate.cfg.xml中dialect的配置:

<property name="dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</property>
用到的jar包:

hibernate-spatial-4.3.jar 、 postgis.jar 、 postgis-jdbc-driver.jar 、postgresql-9.2-1004.jdbc4.jar 、 jts-1.11.jar

还可参考tutorial4、PostGIS整合Hibernate4.0+Spring(Maven,Kepler)



0 0