Trabalhando com JPA,Quarkus,Panache e bolo de chocolate
19106 단어 ptbrjavaquarkusbraziliandevs
다도스 은행의 비행 노선에서 준비 작업이 이미 끝났다.Enquanto escrevia,notei que ele ficou bem longo porque tava trazendo vários conceitos de JPA e queria garantir que você,nobre leitor,soubese do que eu estou falando.
Então a gente vai deixar tudo bem bonitinho aqui para que o próximo post seja topzeira de entender.
팔레모스?
Vamos evoluir o código da nossa para salvar as informaçes num banco de dados.Depois,vamos usar o OpenAPI para validar o que fizemos.
Éhora da aão
bolos의 código da fábrica Partido do código da fábrica de bolos.Vamos adicionar as extensões do JPA e o conector com PostgreSQL.Vamos usar o seguinte comando.
./mvnw quarkus:add-extension -Dextensions="quarkus-hibernate-orm-panache,quarkus-jdbc-postgresql"
Depois, vamos colocar를 설정으로 하고 nosso arquivo 응용 프로그램이 없습니다.속성Esse arquivo vai ficar com a seguinte cara:
quarkus.datasource.db-kind = postgresql
quarkus.datasource.username = Sarah
quarkus.datasource.password = Connor
quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/skynet
quarkus.hibernate-orm.database.generation = update
Com isso,nós informamos ao Quarkus que vamos usar um banco de dados PostgreSQL,que o usuárioéSarah,a senhaéConnor,o banco se chama skynet e estárodando na máquina local na porta 5432.Também,informamos ao JPA que queremos que ele gere as tabelas do banco de dados baseado nas nossas entidades.
E por falar em entidade,vamos alterar a classe Bolo para que ela vire uma entidade persistível.Para isso,ésótrocar o código do arquivo Bolo.자바포에스다키.
package com;
import javax.persistence.Entity;
import io.quarkus.hibernate.orm.panache.PanacheEntity;
@Entity
public class Bolo extends PanacheEntity {
public String nome;
public String descricao;
public Bolo() {
}
public Bolo(String nome, String descricao) {
this.nome = nome;
this.descricao = descricao;
}
}
Bem mais simples que a versão front,neah?!Extendendo a classe PanacheEntity,o Quarkus jáfaz um monte de coisa:
bolos의 código da fábrica Partido do código da fábrica de bolos.Vamos adicionar as extensões do JPA e o conector com PostgreSQL.Vamos usar o seguinte comando.
./mvnw quarkus:add-extension -Dextensions="quarkus-hibernate-orm-panache,quarkus-jdbc-postgresql"
Depois, vamos colocar를 설정으로 하고 nosso arquivo 응용 프로그램이 없습니다.속성Esse arquivo vai ficar com a seguinte cara:quarkus.datasource.db-kind = postgresql
quarkus.datasource.username = Sarah
quarkus.datasource.password = Connor
quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/skynet
quarkus.hibernate-orm.database.generation = update
Com isso,nós informamos ao Quarkus que vamos usar um banco de dados PostgreSQL,que o usuárioéSarah,a senhaéConnor,o banco se chama skynet e estárodando na máquina local na porta 5432.Também,informamos ao JPA que queremos que ele gere as tabelas do banco de dados baseado nas nossas entidades.E por falar em entidade,vamos alterar a classe Bolo para que ela vire uma entidade persistível.Para isso,ésótrocar o código do arquivo Bolo.자바포에스다키.
package com;
import javax.persistence.Entity;
import io.quarkus.hibernate.orm.panache.PanacheEntity;
@Entity
public class Bolo extends PanacheEntity {
public String nome;
public String descricao;
public Bolo() {
}
public Bolo(String nome, String descricao) {
this.nome = nome;
this.descricao = descricao;
}
}
Bem mais simples que a versão front,neah?!Extendendo a classe PanacheEntity,o Quarkus jáfaz um monte de coisa:Também vamos precisamos alterar a nossa classe Bolore Source.Ela ficarácom a seguinte cara.
package com;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.enums.SchemaType;
import org.eclipse.microprofile.openapi.annotations.media.Content;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
import org.eclipse.microprofile.openapi.annotations.parameters.RequestBody;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
@Path("/bolo")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class BoloResource {
@PostConstruct
@Transactional
public void init() {
new Bolo("Chocolate", "Melhor bolo do mundo").persist();;
new Bolo("Sensação", "Chocolate com morango").persist();;
}
@GET
@Operation(summary = "Retorna todos os bolos cadastrados")
@APIResponse(responseCode = "200", //
content = @Content(//
mediaType = MediaType.APPLICATION_JSON, //
schema = @Schema(//
implementation = Bolo.class, //
type = SchemaType.ARRAY)))
public List<Bolo> list() {
return Bolo.listAll();
}
@Operation(summary = "Cadastra um bolo")
@APIResponse(responseCode = "200", //
description = "Retorna todos os todos os bolos cadastrados, incluindo o novo bolo", //
content = @Content(//
mediaType = MediaType.APPLICATION_JSON, //
schema = @Schema(//
implementation = Bolo.class, //
type = SchemaType.ARRAY)))
@POST
@Transactional
public List<Bolo> add(//
@RequestBody(required = true, //
content = @Content(//
mediaType = MediaType.APPLICATION_JSON, //
schema = @Schema(//
implementation = Bolo.class))) Bolo bolo) {
bolo.id = null; //coisa feia, não façam isso em casa
bolo.persist();
return list();
}
@Operation(summary = "Deleta um bolo pelo nome do bolo")
@APIResponse(responseCode = "200", //
description = "Todos os bolos cadastrados menos aquele retirado", //
content = @Content(mediaType = MediaType.APPLICATION_JSON, //
schema = @Schema(implementation = Bolo.class, //
type = SchemaType.ARRAY)))
@DELETE
@Path("/{nome}")
@Transactional
public List<Bolo> delete(//
@Parameter(description = "Nome do bolo a ser retirado", required = true) //
@PathParam("nome") String nome) {
Bolo.delete("nome", nome);
return Bolo.listAll();
}
}
Aqui,nós tiramos o método construtor e criamos um método init()que com a anotaão PostConstruct.Essa anotaço garante que o método seja rodado logo após a construço do nosso BoloResource.오로달 에세 메토도, nós vamos 지적부 os dois bolos iniciais.Os métodos foram reescritos para usarem o active record e as operaçes que alteram dados no banco de dados receberam a anotaç[email protected] anotaçoénecesária para que a operaço seja feita em uma transaço.
Sófalta subir o banco de dados e testar.Isso seráfeito através do seguinte comandodockerque criarum container com as nossas credenciais:
docker run -e POSTGRES_USER=Sarah -e POSTGRES_PASSWORD=Connor -e POSTGRES_DB=skynet -p 5432:5432 postgres:12-alpine
Para testar,basta rodar o seguinte comandomvn quarkus:dev
봐봐.O serviçO estápronto para b̶r̶i̶n̶c̶a̶r̶m̶O̶s̶testarmos através da url localhost:8080/bolo.Com a grande vantagem de queépossível baixar e subir o servidor que os dados estarão salvos.E、 se nós quisermos recomeçar tudo zero,ésóparar o container docker que nós criamos.고려 요소
아티고 나스쿠 마이스 다 네체스데드 가란티르 크 이스타토도 몬도 프랑도 메스마 린가.
Nos meus projetos,não utilizo o ActiveRecord porque tenho preconceptito cométodos estáticos,mas reconcheço que ele tem suas vantagens em projetos BEEEEEEM pequenos.
Um ponto importante,esse códigoé UM exemplo e que nós queremos apenas 지적부 Um Bolo.Por isso que nós colocamos null no id.Num mundo real,não devemos ir expondo as nossas entidades do sistema,mas usarmos DTOs para isso.
Estou ciente de que existe um bug de que cada vez que a gente sobe a aplicaão,ele vai cadestrando novos bolos.Isso será resolvido no próximo 강좌.Agora,que Agora venha o tutorial sobre flyway.
아, e o c ó digo de hoje pode ser encontrado no meugithub.
Reference
이 문제에 관하여(Trabalhando com JPA,Quarkus,Panache e bolo de chocolate), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/lucasscharf/trabalhando-com-jpa-quarkus-panache-e-bolo-de-chocolate-36k7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Trabalhando com JPA,Quarkus,Panache e bolo de chocolate), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lucasscharf/trabalhando-com-jpa-quarkus-panache-e-bolo-de-chocolate-36k7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)