$30 off During Our Annual Pro Sale. View Details »

Simplificando la persistencia de datos con Apache DeltaSpike Data

Daniel Dias
October 05, 2019

Simplificando la persistencia de datos con Apache DeltaSpike Data

JUG Nicaragua en colaboracion con SOUJava, la comunidad de desarrolladores Java de Brasil, los invita al webnair acerca de #Apache #DeltaSpike un proyecto de apache que provee una colección de herramientas de CDI y persistencia de Datos.

===
Apache DeltaSpike es una colección de extensiones CDI portátiles que proporcionan funciones útiles para los desarrolladores de Java.

DeltaSpike consta de un módulo CORE y varios módulos OPCIONALES que proporcionan funcionalidad adicional para nuestras aplicaciones.

En este webnair veremos el módulo de datos, que es el más conocido y muy útil, y porque se convirtió en mi favorito como alternativa a "Spring Data" para Jakarta EE.

Codigo:

https://github.com/Daniel-Dos/danieldiasjava-palestras/tree/master/JUGNicaragua

Video :
https://www.youtube.com/watch?v=djM51tlJuLs&feature=youtu.be

Daniel Dias

October 05, 2019
Tweet

More Decks by Daniel Dias

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. 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.

    View Slide

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

    View Slide

  9. 9 / 26
    Apache DeltaSpike
    Que esta incluido?

    View Slide

  10. 10 / 26

    View Slide

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

    View Slide

  12. 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.

    View Slide

  13. 13 / 26
    Repositorios

    View Slide

  14. 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.

    View Slide

  15. 15 / 26
    Tipos básicos de repositorios

    View Slide

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

    View Slide

  17. 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();
    }
    }

    View Slide

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

    View Slide

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

    View Slide

  20. 20 / 26
    Query Method Expression
    y
    Query Annotations

    View Slide

  21. 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);

    View Slide

  22. 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();

    View Slide

  23. 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

    View Slide

  24. 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/

    View Slide

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

    View Slide