SlideShare una empresa de Scribd logo
1 de 26
Cristian Romero Matesanz
Ingeniero Informático Colegiado 105 Madrid

Spring Roo
Desarrollo ágil de aplicaciones a partir de dominio de aplicación
1. Que es Spring ROO?
 Herramienta de desarrollo ágil basado en Spring a partir de

dominio de la aplicación.
 Permite crear una aplicación base de manera rápida

incluyendo frameworks mas populares:
 Creación de aplicaciones web basadas en Spring MVC, GWT,





JSF2.
Aplicaciones basadas en tecnología Maven
Creación de servicios Rest.
Permite incluir Spring web Flow, Spring Security, Spring
Integration etc mediante add-on desarrollados por Spring Roo.
Posibilidad de crear tus propios add-on
2. Acceso a datos mediante Repositorios 1/2
 Soporte a base de datos sql y nosql:
 Mongo DB (Nosql)
 HSQL (in memory), HSQL (persistent), H2 (in memory)

,MySQL,Postgres,MS SQL Server,Sybase,Oracle *,DB2
*,DB2/400,Google App Engine (GAE),Apache Derby (Java
DB),Firebird
 JPA es un una especificación de acceso a datos. Para poder usarlo

elegir implementación soportada por Spring Roo
 EclipseLink
 Hibernate

 OpenJPA
 DataNucleus 3.
2. Acceso a datos mediante Repositorios 2/2
 * Dependencia JDBC driver para estas bases de datos no se

encuentran en un repositorio de acceso publico de Maven
repositories. Roo crea en tu pom.xml una version especifica y
deberás modificarla con la instalada en tu repositorio.
 Instalar en maven
 mvn install:install-file -Dfile=ojdbc14_g.jar -

DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2
-Dpackaging=jar -DgeneratePom=true
3. Spring data Jpa
 Acceso a datos mediante @Repository
 @Repository es una interfaz que provee todas las

operaciones necesarias para la gestión y acceso a datos.
 Roo se encarga de inyectar la implementación que definamos

a la hora de crear nuestro proyecto.
 Ejemplo:
 public interface AgendaRepository extends JpaRepository<Agenda,

Long>, JpaSpecificationExecutor<Agenda> { }
3. Spring data Jpa
 Operaciones que disponemos mediante el acceso a la

interfaz:
3. Spring Data Jpa: paginación de resultados
y ordenación
 Permite la paginación y el ordenado de los resultados en

cualquiera de la entidades definidas en el modelo:
3. Spring Data Jpa: Realizando consultas
sobre datos 1/3
 Creación de nuestras propias consultas sobre datos mediante

la simple definición de métodos en nuestra interfaz uniendo
condiciones mediante and y or:
3. Spring Data Jpa: Realizando consultas
sobre datos 2/3
 Nos permite navegar entre atributos de la entidad a buscar, y también

saltar entre entidades:

 Si suponemos que Persons tiene Addresses con ZipCodes se puede generar

la siguiente expresión:


List<Person> findByAddressZipCode(ZipCode zipCode);

 Se podrá paginar y ordenar tambien este tipo de consultas:
 Page<User> findByLastname(String lastname, Pageable pageable);
 List<User> findByLastname(String lastname, Sort sort);
 List<User> findByLastname(String lastname, Pageable pageable);
 Ventajas: Muy comodas a la hora de realizar consultas ya que no requiere

implementación

 Desventajas:
 No se puede anidar las distintas consultas para generar un único acceso a la
BBDDUso de predicados con Specifications o Querydsl.
 Las consultas no están tipadas, sin cambio un nombre de un atributo solo
sabré cuando despliegue los errores.
3. Spring Data Jpa: Operadores permitidos
3/3
3. Spring Data Jpa: Usando “named queries”
 Spring data permite crear consultas a partir de una query

definida de manera sencilla:
 Ventajas: Facilidad de programación y uso.
 Desventajas: de nuevo las consultas no son tipadas, solo

conozco los errores en tiempo de ejecución.
3. Spring Data Jpa: Queries basadas en
predicados: Specification versus Querydsl
 Spring data Jpa permite búsquedas basadas en predicados. Por defecto usa

Specifications de Jpa, pero permite soporte a Querydsl.
 Un predicado es una condición de que delimita que delimita un subconjunto

de datos que cumplen dicho predicado:
 Ejemplo: Es gran cliente, cliente que vende mas de una determinada

cantidad
3. Spring Data Jpa: Queries basadas en
predicados: Specification versus Querydsl
 As you can see, Specifications offers some glue-code methods to chain and

combine Specifications. Thus extending your data access layer is just a
matter of creating new Specification implementations and combining them
with ones already existing.
 Ventajas de uso de Specifications:
 Las que provee las consultas de acceso por predicados


Facilidad de añadir y quitar predicados a nuestra consulta



Permite flexibilidad de nuestras consultas a variabilidad de necesidades de nuestros
clientes de manera sencilla

 Desventajas de uso de Specifications:
 Código sucio y poco compresible para crear los predicados
 Necesidad de creación de clases metada _nombreClase para mapear los

atributos.
 No es compatible con mongoDB.
3.Spring Data Jpa: Queries basadas en
predicados: Querydsl
 Permite la ayuda de tu IDE para acceso a las propiedades y

métodos de manera sencilla
 No existe posibilidad de crear queries invalidas

sintácticamente (type-safe on all levels)
 Tipos de dominios y atributos puedes ser accedidos de

manera segura (Sin usos de String para referenciarlos)
 Mayor Flexibilidad a cambios en el dominio
 Al permitir búsqueda por predicados permite la creación de

grandes queries con poco esfuerzo
3.Spring Data Jpa: Queries basadas en
predicados: Querydsl
 Permite la ayuda de tu IDE para acceso a las propiedades y

metodos de manera sencilla
 No existe posiblidad de crear queries invalidas

sintacticamente (type-safe on all levels)
3.Spring Data Jpa: Queries basadas en
predicados: Querydsl
4.Spring Data Jpa: Creación de un
proyecto Roo
1.

Creación del nombre de proyecto


2.

Definición de la base de datos de nuestro proyecto


3.






Tipos relaciones: one to one, one to many, many to one , many to many

Creación de interfaz para la capa de servicios


7.

field string --fieldName descripcion --sizeMin 1 --sizeMax 300 --notNull--unique true
field date --fieldName fechacreacion --type java.util.Date
field number --fieldName importe --type java.lang.Float

Definición de la base de las relaciones entre entidades


6.

entity jpa --class ~.model.Entidad --testAutomatically -–activeRecord false
repository jpa --interface ~.repository.EntidadRepository

Creación de atributos de la entidad


5.

jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

Definición de cada una de las entidades y repositorios de nuestro dominio


4.

project --topLevelPackage es.prueba –projectName curso --java 6 --packaging JAR

service --interface ~.service.ClienteService --entity ~.domain.Cliente

Cerrar consola roo

Eliminar roo del proyecto: http://static.springsource.org/spring-roo/reference/html/removing.html
4.Spring Data Jpa: Relaciones “one to
many Bidireccional”
 Se crea cuando un objeto puede estar relacionado

con n objetos referentes a una entidad.



field set --class ~.model.TrainingProgram --fieldName courses --type
~.model.Course –cardinality ONE_TO_MANY --mappedBy trainingProgram
field reference --class ~.model.Course --fieldName trainingProgram --type
~.model.TrainingProgram --cardinality MANY_TO_ONE

Primary
4.Spring Data Jpa: Relaciones many to
many Bidireccional
 Se crea cuando un objeto puede estar relacionado

con n objetos referentes a una entidad y viceversa
 Existen dos opciones diferentes
 Creación de clase intermedia en el caso de querer

almacenar atributos de la relación y relaciones “one to
many” como las definidas en el punto anterior
 Si no queremos almacenar atributos crearemos dos
sets en cada una de las entidades de dominio y una de
ellas será la entidad fuerte encargada de grabar todos
los cambios existentes
4.Spring Data Jpa: Relaciones many to
many Bidireccional
 Se crea cuando un objeto puede estar relacionado

con n objetos referentes a una entidad.


field set --class ~.model.Tag --fieldName courses--type ~.model.Course-cardinality MANY_TO_MANY



field set --class ~.model.Course --fieldName tags --type ~.model.Tag -cardinality MANY_TO_MANY --mappedBy courses

Primary
Inverse side
4.Spring Data Jpa: Relaciones “one to
one”
 Se crea cuando un objeto puede con un único objeto

de otra entidad


field reference --class ~.model.Factura --fieldName tipoPago --type
~.model.TipoPago –cardinality ONE_TO_ONE

 No pueden ser bidireccionales, roo aun no permite

relaciones bidirecionales con un mapped by


WORKARROUND: Si necesitas una relación bidireccional mapearlas como
one to many, teniendo en cuenta que solo podrás meter en el set un único
valor.
4.Bidireccional o unidireccional??
 Principal ventaja de tener la relación bidireccional es poder recorrerla en

ambas direcciones
 Desventaja: al gestionar los objetos debes mantener los dos lados de la

relación.
 Siempre que no sea necesario recorrer de manera bidireccional evitar su

uso

field set -class ~.model.Persona --fieldName courses--type
~.model.Course--cardinality MANY_TO_MANY
4.Add-on Roo
 Spring mvc:


web mvc setup



web mvc all --package ~.web

 Creación servicios Rest:
 json all
 web mvc json setup
 web mvc json all

 Crea controladores para las operaciones get, post,delete,put

estandar para servicios rest
4.Add-on Roo
Get: Localhost:8080/entidads/4

Get All: Localhost:8080/entidads

Post(Crear 1 entidad):
Localhost:8080/entidads
4.Add-on Roo
Post(Crear n entidades):
Localhost:8080/entidads


√
Update(1 entidad):
Localhost:8080/entidads
Update(n entidades):
Localhost:8080/entidads

Delete(1 entidad):
Localhost:8080/entidads/8
4.Ejemplo practico

Más contenido relacionado

La actualidad más candente

Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con mavenJuan Vladimir
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónPattzy Montero
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspGabriela Vazquez
 
Introducción a JBoss
Introducción a JBossIntroducción a JBoss
Introducción a JBossIker Canarias
 
Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datosDavid
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperOscar V
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 César Pajares
 
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4 JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4 César Pajares
 
Oracle Certified Expert, Java EE 6 Web Service Developer
Oracle Certified Expert, Java EE 6 Web Service DeveloperOracle Certified Expert, Java EE 6 Web Service Developer
Oracle Certified Expert, Java EE 6 Web Service DeveloperOscar V
 
JBoss AS jeap - Curso JBoss JB366 Día 1
JBoss AS jeap - Curso JBoss JB366 Día 1 JBoss AS jeap - Curso JBoss JB366 Día 1
JBoss AS jeap - Curso JBoss JB366 Día 1 César Pajares
 
JBoss AS web services - Curso JBoss JB366 Día 4
JBoss AS web services - Curso JBoss JB366 Día 4 JBoss AS web services - Curso JBoss JB366 Día 4
JBoss AS web services - Curso JBoss JB366 Día 4 César Pajares
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3 JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3 César Pajares
 
Ionic2 01-introduccion
Ionic2 01-introduccionIonic2 01-introduccion
Ionic2 01-introduccionDavid Vaquero
 

La actualidad más candente (20)

Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con maven
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jsp
 
Introducción a JBoss
Introducción a JBossIntroducción a JBoss
Introducción a JBoss
 
Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datos
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
 
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4 JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
 
Oracle Certified Expert, Java EE 6 Web Service Developer
Oracle Certified Expert, Java EE 6 Web Service DeveloperOracle Certified Expert, Java EE 6 Web Service Developer
Oracle Certified Expert, Java EE 6 Web Service Developer
 
Tomcat y Jboss
Tomcat y JbossTomcat y Jboss
Tomcat y Jboss
 
JBoss AS jeap - Curso JBoss JB366 Día 1
JBoss AS jeap - Curso JBoss JB366 Día 1 JBoss AS jeap - Curso JBoss JB366 Día 1
JBoss AS jeap - Curso JBoss JB366 Día 1
 
JBoss AS web services - Curso JBoss JB366 Día 4
JBoss AS web services - Curso JBoss JB366 Día 4 JBoss AS web services - Curso JBoss JB366 Día 4
JBoss AS web services - Curso JBoss JB366 Día 4
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
02 instalación
02 instalación02 instalación
02 instalación
 
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3 JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
 
spring-boot-es
spring-boot-esspring-boot-es
spring-boot-es
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Ionic2 01-introduccion
Ionic2 01-introduccionIonic2 01-introduccion
Ionic2 01-introduccion
 

Destacado

Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Cristian Romero Matesanz
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en JavaCésar Hernández
 
Fibrosis Quística. Cristina Romero Delgado
Fibrosis Quística. Cristina Romero DelgadoFibrosis Quística. Cristina Romero Delgado
Fibrosis Quística. Cristina Romero DelgadoFarmaHospHUNSC
 
Merix Capabilities Ext Na 1 09
Merix Capabilities Ext Na 1 09Merix Capabilities Ext Na 1 09
Merix Capabilities Ext Na 1 09Rich Suriani
 
El Mas Alto Del Mundo
El Mas Alto Del MundoEl Mas Alto Del Mundo
El Mas Alto Del Mundokk DeLujo
 
El porfiriato (d.a.v.a.o)
El porfiriato    (d.a.v.a.o)El porfiriato    (d.a.v.a.o)
El porfiriato (d.a.v.a.o)fuckyeah1488
 
Curation Technologies for Multilingual Europe
Curation Technologies for Multilingual EuropeCuration Technologies for Multilingual Europe
Curation Technologies for Multilingual EuropeGeorg Rehm
 
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridas
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridasLa tendencia de Cloud Computing. Nubes públicas, privadas e híbridas
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridasMundo Contact
 
Ali divandari’s art work
Ali divandari’s art workAli divandari’s art work
Ali divandari’s art workM. Divandari
 
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.vpmarti
 
Grupo 3 a tejón ( Meles meles)
Grupo 3 a  tejón ( Meles meles)Grupo 3 a  tejón ( Meles meles)
Grupo 3 a tejón ( Meles meles)raquelgmur
 
techniques of propaganda
techniques of propagandatechniques of propaganda
techniques of propagandajennifer joe
 

Destacado (20)

Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Java 1.8:Road to Functional Language
Java 1.8:Road to Functional LanguageJava 1.8:Road to Functional Language
Java 1.8:Road to Functional Language
 
Git: guia fácil para uso con Github
Git: guia fácil para uso con GithubGit: guia fácil para uso con Github
Git: guia fácil para uso con Github
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en Java
 
Fibrosis Quística. Cristina Romero Delgado
Fibrosis Quística. Cristina Romero DelgadoFibrosis Quística. Cristina Romero Delgado
Fibrosis Quística. Cristina Romero Delgado
 
Merix Capabilities Ext Na 1 09
Merix Capabilities Ext Na 1 09Merix Capabilities Ext Na 1 09
Merix Capabilities Ext Na 1 09
 
El Mas Alto Del Mundo
El Mas Alto Del MundoEl Mas Alto Del Mundo
El Mas Alto Del Mundo
 
Root Creative Group Portfolio
Root Creative Group PortfolioRoot Creative Group Portfolio
Root Creative Group Portfolio
 
El porfiriato (d.a.v.a.o)
El porfiriato    (d.a.v.a.o)El porfiriato    (d.a.v.a.o)
El porfiriato (d.a.v.a.o)
 
Curation Technologies for Multilingual Europe
Curation Technologies for Multilingual EuropeCuration Technologies for Multilingual Europe
Curation Technologies for Multilingual Europe
 
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridas
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridasLa tendencia de Cloud Computing. Nubes públicas, privadas e híbridas
La tendencia de Cloud Computing. Nubes públicas, privadas e híbridas
 
Ali divandari’s art work
Ali divandari’s art workAli divandari’s art work
Ali divandari’s art work
 
Pka praesentation 14_03_2011
Pka praesentation 14_03_2011Pka praesentation 14_03_2011
Pka praesentation 14_03_2011
 
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.
M-Learning. La sinergia de la educación a distancia y los dispositivos móviles.
 
全新的Qt5
全新的Qt5全新的Qt5
全新的Qt5
 
Grupo 3 a tejón ( Meles meles)
Grupo 3 a  tejón ( Meles meles)Grupo 3 a  tejón ( Meles meles)
Grupo 3 a tejón ( Meles meles)
 
Estandades en el aula
Estandades en el aulaEstandades en el aula
Estandades en el aula
 
Els patricis ppt
Els patricis pptEls patricis ppt
Els patricis ppt
 
techniques of propaganda
techniques of propagandatechniques of propaganda
techniques of propaganda
 

Similar a Spring Roo desarrollo ágil

Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Ronald Cuello
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con HibernateMauro Gomez Mejia
 
Germán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo FrameworkGermán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo FrameworkGrupo PHP Argentina
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generationSergi Almar i Graupera
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...Franklin Parrales Bravo
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en JavaIker Canarias
 
⭐Generación de reportes en múltiples formatos con jasper report e ireport
⭐Generación de reportes en múltiples formatos con jasper report e ireport⭐Generación de reportes en múltiples formatos con jasper report e ireport
⭐Generación de reportes en múltiples formatos con jasper report e ireportJosé Pedro Avila
 
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-netLuis Fernando Aguas Bucheli
 

Similar a Spring Roo desarrollo ágil (20)

Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 
Germán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo FrameworkGermán Peraferrer: Cormo Framework
Germán Peraferrer: Cormo Framework
 
Cormo Framework
Cormo FrameworkCormo Framework
Cormo Framework
 
Ado.net
Ado.netAdo.net
Ado.net
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Java persitence api
Java persitence apiJava persitence api
Java persitence api
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
Tema 5
Tema 5Tema 5
Tema 5
 
Especialista Web J4
Especialista Web   J4Especialista Web   J4
Especialista Web J4
 
⭐Generación de reportes en múltiples formatos con jasper report e ireport
⭐Generación de reportes en múltiples formatos con jasper report e ireport⭐Generación de reportes en múltiples formatos con jasper report e ireport
⭐Generación de reportes en múltiples formatos con jasper report e ireport
 
PUNTOS EXTRAS SEMANA1.doc
PUNTOS EXTRAS SEMANA1.docPUNTOS EXTRAS SEMANA1.doc
PUNTOS EXTRAS SEMANA1.doc
 
Introducción a Spring framework
Introducción a Spring frameworkIntroducción a Spring framework
Introducción a Spring framework
 
Base datos
Base datos Base datos
Base datos
 
S4-PD1-2.2 EF
S4-PD1-2.2 EFS4-PD1-2.2 EF
S4-PD1-2.2 EF
 
Java
JavaJava
Java
 
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
 

Último

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Último (20)

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Spring Roo desarrollo ágil

  • 1. Cristian Romero Matesanz Ingeniero Informático Colegiado 105 Madrid Spring Roo Desarrollo ágil de aplicaciones a partir de dominio de aplicación
  • 2. 1. Que es Spring ROO?  Herramienta de desarrollo ágil basado en Spring a partir de dominio de la aplicación.  Permite crear una aplicación base de manera rápida incluyendo frameworks mas populares:  Creación de aplicaciones web basadas en Spring MVC, GWT,     JSF2. Aplicaciones basadas en tecnología Maven Creación de servicios Rest. Permite incluir Spring web Flow, Spring Security, Spring Integration etc mediante add-on desarrollados por Spring Roo. Posibilidad de crear tus propios add-on
  • 3. 2. Acceso a datos mediante Repositorios 1/2  Soporte a base de datos sql y nosql:  Mongo DB (Nosql)  HSQL (in memory), HSQL (persistent), H2 (in memory) ,MySQL,Postgres,MS SQL Server,Sybase,Oracle *,DB2 *,DB2/400,Google App Engine (GAE),Apache Derby (Java DB),Firebird  JPA es un una especificación de acceso a datos. Para poder usarlo elegir implementación soportada por Spring Roo  EclipseLink  Hibernate  OpenJPA  DataNucleus 3.
  • 4. 2. Acceso a datos mediante Repositorios 2/2  * Dependencia JDBC driver para estas bases de datos no se encuentran en un repositorio de acceso publico de Maven repositories. Roo crea en tu pom.xml una version especifica y deberás modificarla con la instalada en tu repositorio.  Instalar en maven  mvn install:install-file -Dfile=ojdbc14_g.jar - DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2 -Dpackaging=jar -DgeneratePom=true
  • 5. 3. Spring data Jpa  Acceso a datos mediante @Repository  @Repository es una interfaz que provee todas las operaciones necesarias para la gestión y acceso a datos.  Roo se encarga de inyectar la implementación que definamos a la hora de crear nuestro proyecto.  Ejemplo:  public interface AgendaRepository extends JpaRepository<Agenda, Long>, JpaSpecificationExecutor<Agenda> { }
  • 6. 3. Spring data Jpa  Operaciones que disponemos mediante el acceso a la interfaz:
  • 7. 3. Spring Data Jpa: paginación de resultados y ordenación  Permite la paginación y el ordenado de los resultados en cualquiera de la entidades definidas en el modelo:
  • 8. 3. Spring Data Jpa: Realizando consultas sobre datos 1/3  Creación de nuestras propias consultas sobre datos mediante la simple definición de métodos en nuestra interfaz uniendo condiciones mediante and y or:
  • 9. 3. Spring Data Jpa: Realizando consultas sobre datos 2/3  Nos permite navegar entre atributos de la entidad a buscar, y también saltar entre entidades:  Si suponemos que Persons tiene Addresses con ZipCodes se puede generar la siguiente expresión:  List<Person> findByAddressZipCode(ZipCode zipCode);  Se podrá paginar y ordenar tambien este tipo de consultas:  Page<User> findByLastname(String lastname, Pageable pageable);  List<User> findByLastname(String lastname, Sort sort);  List<User> findByLastname(String lastname, Pageable pageable);  Ventajas: Muy comodas a la hora de realizar consultas ya que no requiere implementación  Desventajas:  No se puede anidar las distintas consultas para generar un único acceso a la BBDDUso de predicados con Specifications o Querydsl.  Las consultas no están tipadas, sin cambio un nombre de un atributo solo sabré cuando despliegue los errores.
  • 10. 3. Spring Data Jpa: Operadores permitidos 3/3
  • 11. 3. Spring Data Jpa: Usando “named queries”  Spring data permite crear consultas a partir de una query definida de manera sencilla:  Ventajas: Facilidad de programación y uso.  Desventajas: de nuevo las consultas no son tipadas, solo conozco los errores en tiempo de ejecución.
  • 12. 3. Spring Data Jpa: Queries basadas en predicados: Specification versus Querydsl  Spring data Jpa permite búsquedas basadas en predicados. Por defecto usa Specifications de Jpa, pero permite soporte a Querydsl.  Un predicado es una condición de que delimita que delimita un subconjunto de datos que cumplen dicho predicado:  Ejemplo: Es gran cliente, cliente que vende mas de una determinada cantidad
  • 13. 3. Spring Data Jpa: Queries basadas en predicados: Specification versus Querydsl  As you can see, Specifications offers some glue-code methods to chain and combine Specifications. Thus extending your data access layer is just a matter of creating new Specification implementations and combining them with ones already existing.  Ventajas de uso de Specifications:  Las que provee las consultas de acceso por predicados  Facilidad de añadir y quitar predicados a nuestra consulta  Permite flexibilidad de nuestras consultas a variabilidad de necesidades de nuestros clientes de manera sencilla  Desventajas de uso de Specifications:  Código sucio y poco compresible para crear los predicados  Necesidad de creación de clases metada _nombreClase para mapear los atributos.  No es compatible con mongoDB.
  • 14. 3.Spring Data Jpa: Queries basadas en predicados: Querydsl  Permite la ayuda de tu IDE para acceso a las propiedades y métodos de manera sencilla  No existe posibilidad de crear queries invalidas sintácticamente (type-safe on all levels)  Tipos de dominios y atributos puedes ser accedidos de manera segura (Sin usos de String para referenciarlos)  Mayor Flexibilidad a cambios en el dominio  Al permitir búsqueda por predicados permite la creación de grandes queries con poco esfuerzo
  • 15. 3.Spring Data Jpa: Queries basadas en predicados: Querydsl  Permite la ayuda de tu IDE para acceso a las propiedades y metodos de manera sencilla  No existe posiblidad de crear queries invalidas sintacticamente (type-safe on all levels)
  • 16. 3.Spring Data Jpa: Queries basadas en predicados: Querydsl
  • 17. 4.Spring Data Jpa: Creación de un proyecto Roo 1. Creación del nombre de proyecto  2. Definición de la base de datos de nuestro proyecto  3.    Tipos relaciones: one to one, one to many, many to one , many to many Creación de interfaz para la capa de servicios  7. field string --fieldName descripcion --sizeMin 1 --sizeMax 300 --notNull--unique true field date --fieldName fechacreacion --type java.util.Date field number --fieldName importe --type java.lang.Float Definición de la base de las relaciones entre entidades  6. entity jpa --class ~.model.Entidad --testAutomatically -–activeRecord false repository jpa --interface ~.repository.EntidadRepository Creación de atributos de la entidad  5. jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY Definición de cada una de las entidades y repositorios de nuestro dominio  4. project --topLevelPackage es.prueba –projectName curso --java 6 --packaging JAR service --interface ~.service.ClienteService --entity ~.domain.Cliente Cerrar consola roo Eliminar roo del proyecto: http://static.springsource.org/spring-roo/reference/html/removing.html
  • 18. 4.Spring Data Jpa: Relaciones “one to many Bidireccional”  Se crea cuando un objeto puede estar relacionado con n objetos referentes a una entidad.   field set --class ~.model.TrainingProgram --fieldName courses --type ~.model.Course –cardinality ONE_TO_MANY --mappedBy trainingProgram field reference --class ~.model.Course --fieldName trainingProgram --type ~.model.TrainingProgram --cardinality MANY_TO_ONE Primary
  • 19. 4.Spring Data Jpa: Relaciones many to many Bidireccional  Se crea cuando un objeto puede estar relacionado con n objetos referentes a una entidad y viceversa  Existen dos opciones diferentes  Creación de clase intermedia en el caso de querer almacenar atributos de la relación y relaciones “one to many” como las definidas en el punto anterior  Si no queremos almacenar atributos crearemos dos sets en cada una de las entidades de dominio y una de ellas será la entidad fuerte encargada de grabar todos los cambios existentes
  • 20. 4.Spring Data Jpa: Relaciones many to many Bidireccional  Se crea cuando un objeto puede estar relacionado con n objetos referentes a una entidad.  field set --class ~.model.Tag --fieldName courses--type ~.model.Course-cardinality MANY_TO_MANY  field set --class ~.model.Course --fieldName tags --type ~.model.Tag -cardinality MANY_TO_MANY --mappedBy courses Primary Inverse side
  • 21. 4.Spring Data Jpa: Relaciones “one to one”  Se crea cuando un objeto puede con un único objeto de otra entidad  field reference --class ~.model.Factura --fieldName tipoPago --type ~.model.TipoPago –cardinality ONE_TO_ONE  No pueden ser bidireccionales, roo aun no permite relaciones bidirecionales con un mapped by  WORKARROUND: Si necesitas una relación bidireccional mapearlas como one to many, teniendo en cuenta que solo podrás meter en el set un único valor.
  • 22. 4.Bidireccional o unidireccional??  Principal ventaja de tener la relación bidireccional es poder recorrerla en ambas direcciones  Desventaja: al gestionar los objetos debes mantener los dos lados de la relación.  Siempre que no sea necesario recorrer de manera bidireccional evitar su uso field set -class ~.model.Persona --fieldName courses--type ~.model.Course--cardinality MANY_TO_MANY
  • 23. 4.Add-on Roo  Spring mvc:  web mvc setup  web mvc all --package ~.web  Creación servicios Rest:  json all  web mvc json setup  web mvc json all  Crea controladores para las operaciones get, post,delete,put estandar para servicios rest
  • 24. 4.Add-on Roo Get: Localhost:8080/entidads/4 Get All: Localhost:8080/entidads Post(Crear 1 entidad): Localhost:8080/entidads
  • 25. 4.Add-on Roo Post(Crear n entidades): Localhost:8080/entidads  √ Update(1 entidad): Localhost:8080/entidads Update(n entidades): Localhost:8080/entidads Delete(1 entidad): Localhost:8080/entidads/8