REST con Spring Roo
En este ejemplo se demuestra como podemos utilizar Spring Roo, para genera una aplicación web que expone servicios web REST.
Contenido
- 1 Ejemplo
- 1.1 Creación de la tabla persona
- 1.2 Insertamos algunos datos
- 1.3 Generamos el proyecto
- 1.4 Generamos la capa de persistencia JPA, utilizando Hibernate como ORM
- 1.5 Deshabilitamos hibernate.hbm2ddl.auto"
- 1.6 Agregamos las librerías de Jackson para la serialización de los objetos
- 1.7 Mapeo de la entidad y sus campos
- 1.8 Agregamos soporte para JSON en las entidades
- 1.9 Agregamos soporte para JSON para Spring MVC
- 1.10 Creamos el controlador que expondrá los servicios REST
- 1.11 Compilamos el proyecto
- 1.12 Desplegamos la aplicación
- 1.13 Servicio creados
Ejemplo
Para este ejemplo utilizamos una base de datos Oracle. A continuación detallamos los comandos de Spring Roo y las modificaciones manuales que hay que realizar.
Creación de la tabla persona
create table persona (id number(10) primary key,
nombre varchar2(100), edad number(2))
Insertamos algunos datos
insert into persona values(1,'Cacho',55);
insert into persona values(2,'pepe',45);
insert into persona values(3,'Tomás',0);
insert into persona values(4,'Josefina',2);
commit;
Generamos el proyecto
project --topLevelPackage com.dosideas.personaservice --projectName persona-service --java 6 --packaging WAR
Generamos la capa de persistencia JPA, utilizando Hibernate como ORM
persistence setup --provider HIBERNATE --database ORACLE --hostName hostname --userName userName --databaseName baseName --password pass
Deshabilitamos hibernate.hbm2ddl.auto"
Comentamos la siguiente linea en el archivo persistence.xml
Nota: Como estamos utilizando Oracle, tenemos que modificar el pom de la aplicación para que Maven pueda descargar los drivers.
Cambiar:
<dependency>
<groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.2</version>
</dependency>
Por:
<dependency>
<groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4</version>
</dependency>
También hay que agregar el repositorio donde esta el driver.
<repository>
<id>mvnsearch</id> <url>http://www.mvnsearch.org/maven2/</url> </repository>
Agregamos las librerías de Jackson para la serialización de los objetos
dependency add --groupId org.codehaus.jackson --artifactId jackson-jaxrs --version 1.8.4
Mapeo de la entidad y sus campos
entity jpa --class com.dosideas.personaservice.domain.Persona --identifierField id --identifierColumn id
field string --fieldName nombre
field number --fieldName edad --type java.lang.Long
Por defecto se agrega el campo “version”, para que este campo no se genere hay que modificar la anotación “@RooJpaActiveRecord” en la entidad Persona y agregar el parámetros “versionField” con una cadena vacía.
@RooJpaActiveRecord(versionField = "", identifierColumn = "id", identifierField = "id")
Agregamos soporte para JSON en las entidades
json all
Agregamos soporte para JSON para Spring MVC
web mvc json setup
Creamos el controlador que expondrá los servicios REST
web mvc json all --package ~.web
Compilamos el proyecto
perform package
Desplegamos la aplicación
En este caso utilizamos el plugin de jetty.
mvn jetty:run
Servicio creados
Inserta un registro en la tabla persona
POST http://localhost:8080/persona-service/persona
Inserta una colección de registros en la tabla persona
POST http://localhost:8080/persona-service/persona/jsonArray
Obtiene todos los registros de la tabla persona
GET http://localhost:8080/persona-service/persona
Obtiene el registro correspondiente al id.
GET http://localhost:8080/persona-service/persona/{id}
Borra el registro correspondiente al id.
DELETE http://localhost:8080/persona-service/persona/{id}
Actualiza el registro correspondiente al id.
PUT http://localhost:8080/persona-service/persona/{id}
Actualiza la colleccion de registros.