Microsserviços com Spring Boot e ORM
Ricardo Terra
rterrabh [at] gmail.com
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 1 / 14
CV
Nome: Ricardo Terra
Email: terra [at] ufla.br
www: dcc.ufla.br/∼terra
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Bolsista de Produtividade em Pesquisa do CNPq - Nível 2
Ph.D. (UFMG/UWaterloo)
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 2 / 14
Microsserviços
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 3 / 14
Microsserviços
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 3 / 14
ORM
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 4 / 14
ORM
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 4 / 14
O que vamos precisar?
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 5 / 14
Projeto Agenda: mão na massa
Passo #1: https://start.spring.io/
Gradle
Spring Boot Actuator
Sprint Web Starter
MySql Driver
Spring Data JPA
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 6 / 14
Projeto Agenda: mão na massa
Passo #2: Base de Dados orm (mysql - -user=root - -password=root)
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 7 / 14
Projeto Agenda: mão na massa
Passo #2: Base de Dados orm (mysql - -user=root - -password=root)
1 create database orm;
use orm;
3
/∗criacao da tabela cidade∗/
5 create table CIDADE (
ID integer NOT NULL ,
7 NOME varchar (64) not null ,
primary key ( ID )
9 )engine=InnoDB ;
11 /∗criacao da tabela contato∗/
create table CONTATO (
13 ID integer not n u l l auto_increment ,
NOME varchar (64) not null ,
15 EMAIL varchar (64) not null ,
ANIVERSARIO date not null ,
17 ID_CIDADE integer not null ,
PRIMARY KEY ( ID )
19 )engine=InnoDB ;
21 alter table CONTATO
add constraint FK_CONTATO_CIDADE
23 foreign key (ID_CIDADE) references CIDADE ( ID )
on delete RESTRICT
25 on update RESTRICT ;
27 /∗Insercao de algumas cidades∗/
i n s e r t into CIDADE values
29 (1 , ’ Lavras ’ ) , (2 , ’Sao Joao del−Rei ’ ) , (3 , ’Belo Horizonte ’ ) ;
31 /∗Insercao de um unico contato∗/
i n s e r t into CONTATO values
33 (1 , ’Ricardo Terra ’ , ’ terra@ufla . br ’ , ’1984−04−05’ , 1 ) ;
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 7 / 14
Projeto Agenda: mão na massa
Passo #3: HelloWorld
@EnableAutoConfiguration
Configurações do banco de dados
1 spring . datasource . u r l =jdbc : mysql : // localhost :3306/orm
spring . datasource . username=root
3 spring . datasource . password=root
spring . datasource . driver−class−name=com. mysql . cj . jdbc . Driver
5 spring . jpa . generate−ddl=false
@RestController
@RequestMapping("/hello")
http://localhost:8080/hello
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 8 / 14
Projeto Agenda: mão na massa
Passo #4: CidadeController (como o passado era sofrido)
@RestController e @RequestMapping("/cidades")
@Autowired JdbcTemplate
Criar método list (GET)
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 9 / 14
Projeto Agenda: mão na massa
Passo #5: Entidades
@Entity
@Id @GeneratedValue @Column
@ManyToOne @JoinColumn
toStrings
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 10 / 14
Projeto Agenda: mão na massa
Passo #6: Repositórios
Interface
@Repository
JpaRepository
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 11 / 14
Projeto Agenda: mão na massa
Passo #7: ContatoController
Similar ao CidadeController, mas melhor! =)
POSTMAN (vamos lá... rsrs...)
/list
/add com POST com consumes="application/json"
/del/{id} com @PathVariable
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 12 / 14
Projeto Agenda: mão na massa
Passo #8: Voar!!!
Baixe o projeto completo em:
http://www.dcc.ufla.br/~terra/public/
Crie métodos add, del, update, list para as entidades
Desenvolva um front-end com Vue ou React
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 13 / 14
Obrigado!!!
Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 14 / 14

Microsserviços com Spring Boot e ORM

  • 1.
    Microsserviços com SpringBoot e ORM Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 1 / 14
  • 2.
    CV Nome: Ricardo Terra Email:terra [at] ufla.br www: dcc.ufla.br/∼terra Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Bolsista de Produtividade em Pesquisa do CNPq - Nível 2 Ph.D. (UFMG/UWaterloo) Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos ) Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano ) Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 2 / 14
  • 3.
    Microsserviços Ricardo Terra (rterrabh[at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 3 / 14
  • 4.
    Microsserviços Ricardo Terra (rterrabh[at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 3 / 14
  • 5.
    ORM Ricardo Terra (rterrabh[at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 4 / 14
  • 6.
    ORM Ricardo Terra (rterrabh[at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 4 / 14
  • 7.
    O que vamosprecisar? Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 5 / 14
  • 8.
    Projeto Agenda: mãona massa Passo #1: https://start.spring.io/ Gradle Spring Boot Actuator Sprint Web Starter MySql Driver Spring Data JPA Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 6 / 14
  • 9.
    Projeto Agenda: mãona massa Passo #2: Base de Dados orm (mysql - -user=root - -password=root) Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 7 / 14
  • 10.
    Projeto Agenda: mãona massa Passo #2: Base de Dados orm (mysql - -user=root - -password=root) 1 create database orm; use orm; 3 /∗criacao da tabela cidade∗/ 5 create table CIDADE ( ID integer NOT NULL , 7 NOME varchar (64) not null , primary key ( ID ) 9 )engine=InnoDB ; 11 /∗criacao da tabela contato∗/ create table CONTATO ( 13 ID integer not n u l l auto_increment , NOME varchar (64) not null , 15 EMAIL varchar (64) not null , ANIVERSARIO date not null , 17 ID_CIDADE integer not null , PRIMARY KEY ( ID ) 19 )engine=InnoDB ; 21 alter table CONTATO add constraint FK_CONTATO_CIDADE 23 foreign key (ID_CIDADE) references CIDADE ( ID ) on delete RESTRICT 25 on update RESTRICT ; 27 /∗Insercao de algumas cidades∗/ i n s e r t into CIDADE values 29 (1 , ’ Lavras ’ ) , (2 , ’Sao Joao del−Rei ’ ) , (3 , ’Belo Horizonte ’ ) ; 31 /∗Insercao de um unico contato∗/ i n s e r t into CONTATO values 33 (1 , ’Ricardo Terra ’ , ’ terra@ufla . br ’ , ’1984−04−05’ , 1 ) ; Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 7 / 14
  • 11.
    Projeto Agenda: mãona massa Passo #3: HelloWorld @EnableAutoConfiguration Configurações do banco de dados 1 spring . datasource . u r l =jdbc : mysql : // localhost :3306/orm spring . datasource . username=root 3 spring . datasource . password=root spring . datasource . driver−class−name=com. mysql . cj . jdbc . Driver 5 spring . jpa . generate−ddl=false @RestController @RequestMapping("/hello") http://localhost:8080/hello Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 8 / 14
  • 12.
    Projeto Agenda: mãona massa Passo #4: CidadeController (como o passado era sofrido) @RestController e @RequestMapping("/cidades") @Autowired JdbcTemplate Criar método list (GET) Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 9 / 14
  • 13.
    Projeto Agenda: mãona massa Passo #5: Entidades @Entity @Id @GeneratedValue @Column @ManyToOne @JoinColumn toStrings Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 10 / 14
  • 14.
    Projeto Agenda: mãona massa Passo #6: Repositórios Interface @Repository JpaRepository Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 11 / 14
  • 15.
    Projeto Agenda: mãona massa Passo #7: ContatoController Similar ao CidadeController, mas melhor! =) POSTMAN (vamos lá... rsrs...) /list /add com POST com consumes="application/json" /del/{id} com @PathVariable Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 12 / 14
  • 16.
    Projeto Agenda: mãona massa Passo #8: Voar!!! Baixe o projeto completo em: http://www.dcc.ufla.br/~terra/public/ Crie métodos add, del, update, list para as entidades Desenvolva um front-end com Vue ou React Ricardo Terra (rterrabh [at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 13 / 14
  • 17.
    Obrigado!!! Ricardo Terra (rterrabh[at] gmail.com) Microsserviços com Spring Boot e ORM Setembro/2019 14 / 14