REST con Spring Roo

De Dos Ideas.
Revisión del 18:49 28 mar 2012 de Parivero (discusión | contribuciones) (Página creada con 'En este ejemplo se demuestra como podemos utilizar Spring Roo, para genera una aplicación web que expone servicios web [http://es.wikipedia.org/wiki/Representational_State_…')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

En este ejemplo se demuestra como podemos utilizar Spring Roo, para genera una aplicación web que expone servicios web REST.


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.

PUT http://localhost:8080/persona-service/persona/jsonArray