2009年6月3日 星期三

[Java] Geometry mapping hibernate

上次為了把geom型態的物件整進hibernate~ google上找了很久=_=|||
真是超冷門的

lib:
能讓hibernate3跑的jars +
hibernate-spatial-1.0-M2.jar +
hibernate-spatial-postgis-1.0-M2.jar(db選用) +
jts-1.8.jar


jdbc jar:(好像是這樣子分的O_oa)
postgresql-8.3-604.jdbc3.jar (jdk 1.5-選用)
postgresql-8.3-604.jdbc4.jar (jdk 1.6+選用)
postgis_1.3.2.jar


hibernate.cfg.xml:
< property name="dialect">org.hibernatespatial.postgis.PostgisDialect< /property>
< property name="connection.driver_class">org.postgresql.Driver< /property>


hbm.xml(geom物件O/R mapping):
< property name="geom" column="geom" type="org.hibernatespatial.GeometryUserType" / >


Object import:
import com.vividsolutions.jts.geom.Geometry;


Bean property:
Geometry geom;


New Object:(用到的是POINT, 不知道是不是因為POINT太簡單, 居然找不到範例orz, 亂點了好久才湊出來Q_Q|||)
import com.vividsolutions.jts.geom.*;

protected void createGeom(double x, double y) {
if(g == null) {
Coordinate coord = new Coordinate();
coord.x = x;
coord.y = y;
g = Constant.GeomFactory.createPoint(coord);
g.setSRID(Constant.SRID);
}
}


實作支援他的open source是hibernatespatial, 關鍵字用"hibernate spatial"比較好查
release downlaod網址:
http://www.hibernatespatial.org/download.html

不過被同事念說沒提供線段映射method, 沒提供就用db跑阿~真是的XD..

沒有留言: