Slide 1

Slide 1 text

Daniel Dias Jakarta EE Developer - SouJava [email protected] - @danieldiasjava Simplificando la persistencia de datos con Apache

Slide 2

Slide 2 text

2 / 26 Agenda Apache DeltaSpike - Visión general DeltaSpike Data

Slide 3

Slide 3 text

3 / 26 Apache DeltaSpike https://deltaspike.apache.org/

Slide 4

Slide 4 text

4 / 26 ● Una colección de extensiones CDI portátiles que proporcionan funciones útiles para desarrolladores de Java. Apache DeltaSpike

Slide 5

Slide 5 text

5 / 26 ● Una colección de extensiones CDI portátiles que proporcionan funciones útiles para desarrolladores de Java. ● Consiste en un módulo CORE y varios módulos OPCIONALES que proporcionan funcionalidad adicional para nuestras aplicaciones. Apache DeltaSpike

Slide 6

Slide 6 text

6 / 26 ● Una colección de extensiones CDI portátiles que proporcionan funciones útiles para desarrolladores de Java. ● Consiste en un módulo CORE y varios módulos OPCIONALES que proporcionan funcionalidad adicional para nuestras aplicaciones. ● Estas incluyen características para una seguridad mejorada con control de tipo seguro sobre invocaciones de métodos, integración con programaciones, inyección de objetos CDI en validadores, un alcance y contexto transaccional, y más. Apache DeltaSpike

Slide 7

Slide 7 text

7 / 26 Apache DeltaSpike ● Una colección de extensiones CDI portátiles que proporcionan funciones útiles para desarrolladores de Java. ● Consiste en un módulo CORE y varios módulos OPCIONALES que proporcionan funcionalidad adicional para nuestras aplicaciones. ● Estas incluyen características para una seguridad mejorada con control de tipo seguro sobre invocaciones de métodos, integración con programaciones, inyección de objetos CDI en validadores, un alcance y contexto transaccional, y más. ● Como una extensión CDI, DeltaSpike debe usarse junto con una implementación CDI y es compatible tanto con JBoss Weld como con Apache OpenWebBeans. Probado en una variedad de servidores y contenedores de aplicaciones habilitados para CDI, incluidos TomEE, WildFly, GlassFish y Jetty.

Slide 8

Slide 8 text

8 / 26 Apache DeltaSpike Ganador de Duke’s Choice 2014

Slide 9

Slide 9 text

9 / 26 Apache DeltaSpike Que esta incluido?

Slide 10

Slide 10 text

10 / 26

Slide 11

Slide 11 text

11 / 26 DeltaSpike Data https://deltaspike.apache.org/documentation/data.html

Slide 12

Slide 12 text

12 / 26 DeltaSpike Data ● El módulo de datos es una implementación del estándar de repositorio. ● Solo es compatible con RDBMS a través de JPA. ● Pero podría extenderse para admitir otros servicios de datos. ● Utiliza el módulo “bean parcial” para crear dinámicamente la implementación en tiempo de ejecución. ● Los estándares de repositorio son ideales para consultas simples que requieren código cliché, permitiendo la centralización de la lógica de consulta, reduciendo así la duplicación de código y mejorando la capacidad de prueba.

Slide 13

Slide 13 text

13 / 26 Repositorios

Slide 14

Slide 14 text

14 / 26 @Repository(forEntity=Event.class) public interface EventRepository {} @Repository(forEntity=Event.class) public abstract class EventRepository {} DeltaSpike Data ● La anotación no tiene que definir la clase de entidad, pero si solo hay clases o interfaces simples, esta es la única forma de decirle a la estructura con qué entidad de depósito está relacionada.

Slide 15

Slide 15 text

15 / 26 Tipos básicos de repositorios

Slide 16

Slide 16 text

16 / 26 La Interface Base EntityRepository @Repository public interface EventRepository extends EntityRepository{}

Slide 17

Slide 17 text

17 / 26 La Clase AbstractEntityRepository @Repository public abstract class EventRepository extends AbstractEntityRepository { public List findBySpeaker(String speaker) { return typedQuery("select e from Event e where e.speaker = ?1") .setParameter(1, speaker).getResultList(); } }

Slide 18

Slide 18 text

18 / 26 La Interface FullEntityRepository @Repository public interface EventRepository extends FullEntityRepository{}

Slide 19

Slide 19 text

19 / 26 La Clase AbstractFullEntityRepository @Repository public abstract class EventRepository extends AbstractFullEntityRepository { public List findBySpeaker(String speaker) { return criteria() .like(Event_.speaker, "%" + speaker + "%") .getResultList(); } }

Slide 20

Slide 20 text

20 / 26 Query Method Expression y Query Annotations

Slide 21

Slide 21 text

21 / 26 Query Method Expression @Repository public interface EventRepository extends EntityRepository{ Optional findBySpeaker(String speaker); } ● El método de consulta debe devolver una entidad, una opción de entidad, una lista de entidades o un flujo de entidad. ● Debe comenzar con el prefijo findBy (o findOptionalBy, findAnyBy, findAll, findFirst o findTop relacionados). ● Puede agregar más bloques comparadores de propiedades que deben ser concatenados por un operador booleano. Este es un AND o OR. ● Podemos usar el mismo método para eliminar una entidad: Debe comenzar con la palabra clave removeBy (o relacionada con deleteBy). ● También puede ordenar las consultas con la palabra clave OrderBy, seguido del nombre y la dirección del atributo (Asc o Desc): List findByLastNameLikeOrderByAgeAscLastNameDesc(String lastName);

Slide 22

Slide 22 text

22 / 26 Query Annotations @Repository public interface EventRepository extends EntityRepository{ @Query(“select e Event e where e.speaker = ?1”) Event findBySpeaker(String speaker); } ● Puede usar una consulta SQL nativa simplemente agregando el argumento:isNative = true. ● apoyo @NamedQueries . ● consulta de soporte en tiempo de ejecución usando QueryResult : @Query("select p from Person p where p.age between ?1 and ?2") QueryResult findAllByAge(int minAge, int maxAge); List result = personRepository.findAllByAge(18, 65) .orderAsc("p.lastName", false) .orderDesc("p.age", false) .lockMode(LockModeType.WRITE) .hint("org.hibernate.timeout", Integer.valueOf(10)) .getResultList();

Slide 23

Slide 23 text

23 / 26 - Código ( https://github.com/apache/deltaspike ) - Issues :( https://issues.apache.org/jira/projects/DELTASPIKE/issues) - Site ( https://deltaspike.apache.org) - Git-Workflows (https://deltaspike.apache.org/suggested-git-workflows.html) Listas : - subscribe = [email protected] - User List = [email protected] - Dev-subscribe = [email protected] - Dev List = [email protected] Contribuyendo

Slide 24

Slide 24 text

24 / 26 Referencias - https://deltaspike.apache.org/ - https://deltaspike.apache.org/documentation/ - http://www.slideshare.net/antoinesd/apache-deltaspike-the-cdi-toolbox - https://www.slideshare.net/os890/apache-deltaspike - https://www.baeldung.com/deltaspike-data-module - https://deltaspike.apache.org/documentation/data.html#QueryMethodExpressions - https://deltaspike.apache.org/documentation/data.html#QueryAnnotations - https://deltaspike.apache.org/documentation/data.html#AnnotationOptions - https://medium.com/danieldiasjava/simplificando-persistencia-de-dados-com-apache-deltaspike -data-6fd27bb2d821 - https://www.javaindeed.com/implementing-repositories-in-java-se-using-deltaspike/

Slide 25

Slide 25 text

Gracias Daniel Dias Jakarta EE Developer - SouJava [email protected] - @danieldiasjava