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