Há algum tempo atrás eu estava necessitando mapear um objeto geométrico com o Hibernate para um aplicação. Na época fiz várias buscas e não obtive muito sucesso, então mandei uma mensagem para o Diego Plentz, um membro do GUJ especialista em Hibernate, e ele em resposta escreveu um post no seu blog.
Ele me falou que para mapear esses casos especiais o Hibernate oferece um mecanismo muito poderoso : os UserTypes. E partir daí uma solução elegante para o tratamento dos tipos geometry no Hibernate.
O projeto SpatialEJB3 é que um UserType (GeometryType no caso) com a implementação para tratar o tipo Geometry. Ele pode ser usado tanto com Hibernate puro, quanto para EJB3. Para usar o recurso, fica extremamente simples:
@Type(type = “org.postgis.hibernate.GeometryType”)
public Geometry getLocation(){
return location;
}
Fonte: Blog do Plentz

Fernando..
Achei o post sobre o mapeamento bastante interessante mas por já trababalhar a algum tempo com este tipo de tecnologia ao utilizar o mapeamento via EJB3Spatial me deparei com um problema bastante expressivo. As classes geometricas(Geometry e todas as suas outras filhas) que o postgis possui na sua implementação não possui compatibilidade com os objetos da JTS(Java Topology Suite). A implementação do JTS é a mesma utilizada em toda a estrutura da biblioteca Geotools e possui uma serie de funcionalidades que a estrutura do postgis não implementa. Por isso que atualmente indico a todos que utilizem a implementação do HibernateSpatial. Esta implementação atualmente já trabalha perfeitamente com o padrão JPA e nativamente com a JTS.
Estou para escrever um artigo falando sobre o HibernateSpatial e suas utilizações, se tive espaço no seu blog para postar seria ótimo.
Abraços a todos….
Rafael,
O espaço aqui do blog está a disposição, basta você enviar o artigo para o meu email, que eu publico aqui, dando os créditos a você, sem problema algum.
Abraço,
Fernando