Skip to main content

Jmoordb-core-quarkus

 Jmoordb-core-quarkus es la implementación que estamos desarrollando de Jmoordb-core, para intregaciñón con Quarkus y generar imágenes nativa.


Solo necesitas agregar a tu proyecto Quarkus

<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>


	<dependency>
	    <groupId>com.github.avbravo</groupId>
	    <artifactId>jmoordb-core-processor-quarkus</artifactId>
	    <version>0.1</version>
	</dependency>



Agregue la configuración al archivo application.properties

quarkus.mongodb.connection-string = mongodb://localhost:27017


Cree una entidad



@Entity(jakartaSource = JakartaSource.JAVAEE_LEGACY)

public class Pais {

    @Id(autogeneratedActive = AutogeneratedActive.ON)

    private Long idpais;

  

    @Column

    private String pais;

    

    @Column

    private Date fecha;


    public Pais() {

    }

}




Cree un Repository


@Repository(entity = Pais.class, jakartaSource = JakartaSource.JAVAEE_LEGACY)
public interface PaisRepository extends CrudRepository<Pais, Long> {
    
      
 @Find
 public List<Pais> findByFechaGreaterThanEqualAndFechaLessThanEqualAndPais(@ExcludeTime Date start, @ExcludeTime Date end, String pais);

}




Cree una clase llamada MongoDBProducer


import com.jmoordb.core.annotation.DateSupport;
import com.jmoordb.core.annotation.enumerations.JakartaSource;
import java.io.Serializable;
import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
@DateSupport(jakartaSource = JakartaSource.JAVAEE_LEGACY)
public class MongoDBProducer implements Serializable {
    
}



Cree el endpoint


import com.jmoordb.core.annotation.date.DateFormat;
import com.jmoordbcore.model.Pais;

import com.jmoordbcore.repository.PaisRepository;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;


/**
 *
 * @author avbravo
 */
@Path("pais")

public class PaisController {


    // <editor-fold defaultstate="collapsed" desc="Inject">
    @Inject
    PaisRepository paisRepository;


    

// </editor-fold>
   

    // <editor-fold defaultstate="collapsed" desc="findAll">
    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Pais> findAll() {

        return paisRepository.findAll();
    }
// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Pais findByIdpais">


    // <editor-fold defaultstate="collapsed" desc="Response save">
    @POST

    public Response save(Pais pais) {

        pais.setFecha(new Date());
        return Response.status(Response.Status.CREATED).entity(paisRepository.save(pais)).build();
    }
// </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Response update">

    @PUT
  
    public Response update(  Pais pais) {

        pais.setFecha(new Date());
        return Response.status(Response.Status.CREATED).entity(paisRepository.save(pais)).build();
    }
// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Response delete">
    @DELETE
    @Path("{idpais}")
    
    public Response delete(@PathParam("idpais") Long idpais) {
        paisRepository.deleteByPk(idpais);
        return Response.status(Response.Status.NO_CONTENT).build();
    }
    // </editor-fold>
  

   
    // <editor-fold defaultstate="collapsed" desc="@Path("fechagreaterthanequalandfechalessthanequalandpais")">
    @Path("fechagreaterthanequalandfechalessthanequalandpais")
    @GET
    public List<Pais> findByFechaGreaterThanEqualAndFechaLessThanEqualAndPais(@QueryParam("fecha") @DateFormat final Date fecha, @QueryParam("fechafinal") @DateFormat final Date fechafinal, @QueryParam("pais") String pais) {
        return paisRepository.findByFechaGreaterThanEqualAndFechaLessThanEqualAndPais(fecha, fechafinal, pais);

    }

    // </editor-fold>



}



Crear la imagen nativa

./mvnw package -Pnative                                                                                     


Ejecutar nuestra imagen nativa mediante

./target/capitulo25-1.0.0-SNAPSHOT-runner                                                                    

Observe el tiempo en que demora en ejecutar la aplicación 0.003s



Contamos con una colección de 



Realizamos la consulta con Postman







Comments

Popular posts from this blog

JUnit con DataClassG

JUnit con DataClassG 0. ESQUEMA Services: Por cada beans crearemos una clase Services que se encargará de interactuar con el controller para realizar las operaciones de la base de datos. Se crearan los métodos insert, update,delete y los demas metodos para realizar las diversas operaciones. Test: Se crearán las clases para test de las clases Services. Form: Los formularios para la interactuar con el usuario. ProvinciasServices.java colocamos los métodos, insert, update,delete public class ProvinciasServices {    ProvinciasController provinciasController = new ProvinciasController();    public ProvinciasServices() {    }    public Boolean insert (Provincias provincias){        try{            if(provinciasController.insert(provincias)){              return tru...

Primefaces v13

 La versión nueva de primefaces v13.0 elimina el componente <p:repeat>  Consulte los cambios en  https://github.com/primefaces/primefaces/releases/tag/13.0.0 por lo tanto si necesita una solución similar considere utilizar  <p:carousel>  o  <ui:repeat> En la versión 13 genera una excepción