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

Jmoordb-Core @UpdateMany y @DeleteMany

 Jmoordb-Core @UpdateMany y @DeleteMany Estoy trabajando en una versión nueva de jmoordb-core en la cual se estará implementando nuevas funcionalidades como lo son @DeleteMany y    @UpdateMany con la finalidad de hacer operaciones sobre múltiples documentos de la colección.

jmoordb-core en Jakarta EE 10

Estamos haciendo pruebas de una versión totalmente reescrita desde cero de Jmoordb. Jakarta EE 10/NetBeans 14/ MongoDB/ Glassish