Antes de empezar

1

Pasos para aprender Java Spring

2

Instalaci贸n de ambiente de desarrollo: Windows

3

驴Java sigue siendo gratuito?

4

Instalaci贸n de ambiente de desarrollo: Linux Ubuntu

5

Instalaci贸n de ambiente de desarrollo: macOS

Introducci贸n a Spring boot

6

驴Qu茅 es y qu茅 usaremos de Spring?

7

Conocer qu茅 es una aplicaci贸n autocontenida

8

Crear nuestra aplicaci贸n con Spring Initializr

9

Hola mundo con Spring Boot

10

Configurar Spring Boot

11

Crear la estructura del proyecto

Spring Data

12

驴Qu茅 es JPA?

13

Conocer qu茅 es Spring Data

14

Conectar la base de datos a nuestra aplicaci贸n

15

Mapear las tablas como clases

16

Crear Entity cuando su clave primaria es compuesta

17

Mapear relaciones entre clases

18

Usar la interface CrudRepository

19

Query Methods

Construyendo nuestra API

20

Implementar la anotaci贸n @Repository

21

驴Qu茅 es el patr贸n Data Mapper y qu茅 resuelve?

22

Orientar nuestra API al dominio con MapStruct

23

Orientar nuestro repositorio a t茅rminos del dominio

24

Inyecci贸n de dependencias

25

Implementar la anotaci贸n @Service

26

Implementar la anotaci贸n @RestController

27

Exponer nuestra API

Mejorando nuestra API

28

Controlar las respuestas HTTP

29

Crear el dominio de compras

30

Mapear el dominio de compras

31

Crear el repositorio de compras

32

Probando nuestros servicios de compras

33

Documentar nuestra API con Swagger

Spring Security

34

Configurar la seguridad de nuestra API con Spring Security

35

Generar un JWT

36

Autenticaci贸n con JWT

37

Autorizaci贸n con JWT

Despliegue de nuestra aplicaci贸n

38

Desplegar nuestra API desde la ventana de comandos

39

Desplegar nuestra base de datos con Heroku

40

Desplegar nuestra API con Heroku

41

Conclusiones y despedida del curso

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

1D
9H
41M
22S
Curso de Java Spring

Curso de Java Spring

Alejandro Ram铆rez

Alejandro Ram铆rez

Desplegar nuestra base de datos con Heroku

39/41
Recursos

Aportes 14

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

En windows adicionalmente realice la siguiente configuraci贸n para asociar el repositorio a Heroku, de lo contrario no funcionaba $heroku config, platziapp es el nombre del proyecto en heroku

$ heroku git:remote -a platziapp

Si les dice el error:

Error: Missing required flag:

coloquen:

heroku git:remote -a nombreDeProyecto

Para los que no tienen instalado el pgadmin y quieren conectarse desde el CLI a postgresql.

sudo psql -h <HOST> -U <USER_NAME>-<DATABASE_NAME> -p <PUERTO>


鈥 Table 鈥淐ATEGORIAS鈥


CREATE TABLE CATEGORIAS (
鈥渋d_categoria鈥 SERIAL NOT NULL,
鈥渄escripcion鈥 VARCHAR(45) NOT NULL,
鈥渆stado鈥 BOOLEAN NOT NULL,
PRIMARY KEY (鈥渋d_categoria鈥));


鈥 Table 鈥淧RODUCTOS鈥


CREATE TABLE PRODUCTOS (
鈥渋d_producto鈥 SERIAL NOT NULL,
鈥渘ombre鈥 VARCHAR(45) NULL,
鈥渋d_categoria鈥 INT NOT NULL,
鈥渃odigo_barras鈥 VARCHAR(150) NULL,
鈥減recio_venta鈥 DECIMAL(16,2) NULL,
鈥渃antidad_stock鈥 INT NOT NULL,
鈥渆stado鈥 BOOLEAN NULL,
PRIMARY KEY (鈥渋d_producto鈥),
CONSTRAINT "fk_PRODUCTOS_CATEGORIAS"
FOREIGN KEY (鈥渋d_categoria鈥)
REFERENCES CATEGORIAS (鈥渋d_categoria鈥)
ON DELETE NO ACTION
ON UPDATE NO ACTION);


鈥 Table 鈥淐LIENTES鈥


CREATE TABLE CLIENTES (
鈥渋d鈥 VARCHAR(20) NOT NULL,
鈥渘ombre鈥 VARCHAR(40) NULL,
鈥渁pellidos鈥 VARCHAR(100) NULL,
鈥渃elular鈥 NUMERIC NULL,
鈥渄ireccion鈥 VARCHAR(80) NULL,
鈥渃orreo_electronico鈥 VARCHAR(70) NULL,
PRIMARY KEY (鈥渋d鈥));


鈥 Table 鈥淐OMPRAS鈥


CREATE TABLE COMPRAS (
鈥渋d_compra鈥 SERIAL NOT NULL,
鈥渋d_cliente鈥 VARCHAR(20) NOT NULL,
鈥渇echa鈥 TIMESTAMP NULL,
鈥渕edio_pago鈥 CHAR(1) NULL,
鈥渃omentario鈥 VARCHAR(300) NULL,
鈥渆stado鈥 CHAR(1) NULL,
PRIMARY KEY (鈥渋d_compra鈥),
CONSTRAINT "fk_COMPRAS_CLIENTES1"
FOREIGN KEY (鈥渋d_cliente鈥)
REFERENCES CLIENTES (鈥渋d鈥)
ON DELETE NO ACTION
ON UPDATE NO ACTION);


鈥 Table 鈥淐OMPRAS_PRODUCTOS鈥


CREATE TABLE COMPRAS_PRODUCTOS (
鈥渋d_compra鈥 INT NOT NULL,
鈥渋d_producto鈥 INT NOT NULL,
鈥渃antidad鈥 INT NULL,
鈥渢otal鈥 DECIMAL(16,2) NULL,
鈥渆stado鈥 BOOLEAN NULL,
PRIMARY KEY (鈥渋d_compra鈥, 鈥渋d_producto鈥),
CONSTRAINT "fk_COMPRAS_PRODUCTOS_PRODUCTOS1"
FOREIGN KEY (鈥渋d_producto鈥)
REFERENCES PRODUCTOS (鈥渋d_producto鈥)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT "fk_COMPRAS_PRODUCTOS_COMPRAS1"
FOREIGN KEY (鈥渋d_compra鈥)
REFERENCES COMPRAS (鈥渋d_compra鈥)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Heroku ya no permite crear proyectos sin antes agregar un metodo de pago.

Buen curso, me parece que podr铆a reemplazar completamente el Curso de Spring Boot. Hice los dos.

Generar dump

pg_dump  -h localhost -p 5432 -U postgres market  > market.bak   

Restaurar en heroku

psql -h "host de heroku" -p 5432 -U "Usuario de heroku" -d "Nombre de base de datos" -f "market.bak"

鈥 CATEGORIAS
INSERT INTO categorias VALUES (1, 鈥楩rutas y verduras鈥, true);
INSERT INTO categorias VALUES (2, 鈥楶asteler铆a鈥, true);
INSERT INTO categorias VALUES (3, 鈥楥arnes y pescados鈥, true);
INSERT INTO categorias VALUES (4, 鈥楲谩cteos y huevos鈥, true);
INSERT INTO categorias VALUES (5, 鈥楤ebidas鈥, true);
INSERT INTO categorias VALUES (6, 鈥楲icores鈥, true);
INSERT INTO categorias VALUES (7, 鈥楥uidado personal鈥, true);
INSERT INTO categorias VALUES (8, 鈥楧espensa鈥, true);

鈥 PRODUCTOS
INSERT INTO productos VALUES (1, 鈥楪uayaba Feijoa鈥, 1, 鈥7029 A42 23鈥, 300, 500, true);
INSERT INTO productos VALUES (2, 鈥楳ango鈥, 1, 鈥0316 R56 01鈥, 2100, 250, true);
INSERT INTO productos VALUES (3, 鈥楳anzana鈥, 1, 鈥7923 T23 19鈥, 700, 130, true);
INSERT INTO productos VALUES (4, 鈥楢guacate鈥, 1, 鈥9322 Q33 02鈥, 2500, 98, true);
INSERT INTO productos VALUES (5, 鈥楲echuga鈥, 1, 鈥9742 S22 21鈥, 4000, 86, true);
INSERT INTO productos VALUES (6, 鈥楾omate鈥, 1, 鈥0483 R00 97鈥, 290, 430, true);
INSERT INTO productos VALUES (7, 鈥楶era鈥, 1, 鈥9999 X10 01鈥, 750, 210, true);
INSERT INTO productos VALUES (8, 鈥楢pio鈥, 1, 鈥3390 F29 45鈥, 150, 115, true);
INSERT INTO productos VALUES (9, 鈥楶apaya鈥, 1, 鈥5291 J34 32鈥, 4500, 73, true);
INSERT INTO productos VALUES (10, 鈥楲im贸n鈥, 1, 鈥7886 N18 32鈥, 350, 425, true);
INSERT INTO productos VALUES (11, 鈥楤rownie鈥, 2, 鈥6683 H15 20鈥, 2500, 80, true);
INSERT INTO productos VALUES (12, 鈥楶an tajado鈥, 2, 鈥5745 F05 47鈥, 4500, 120, true);
INSERT INTO productos VALUES (13, 鈥楾orta鈥, 2, 鈥3831 D97 99鈥, 10000, 35, true);
INSERT INTO productos VALUES (14, 鈥楾ortilla鈥, 2, 鈥4335 Z33 84鈥, 6400, 87, true);
INSERT INTO productos VALUES (15, 鈥楾ostadas鈥, 2, 鈥6584 M19 25鈥, 4000, 45, true);
INSERT INTO productos VALUES (16, 鈥楥hocorramo鈥, 2, 鈥4487 S00 97鈥, 2000, 105, true);
INSERT INTO productos VALUES (17, 鈥楽alm贸n鈥, 3, 鈥4546 A00 01鈥, 28000, 55, true);
INSERT INTO productos VALUES (18, 鈥楶unta de anca鈥, 3, 鈥3678 E57 22鈥, 12000, 32, true);
INSERT INTO productos VALUES (19, 鈥楶osta鈥, 3, 鈥8893 O01 03鈥, 7800, 40, true);
INSERT INTO productos VALUES (20, 鈥楥ostilla de cerdo鈥, 3, 鈥4534 Q12 88鈥, 8600, 70, true);
INSERT INTO productos VALUES (21, 鈥楾ilapia鈥, 3, 鈥5684 R53 02鈥, 17000, 60, true);
INSERT INTO productos VALUES (22, 鈥楳erluza鈥, 3, 鈥3523 R04 00鈥, 23000, 45, true);
INSERT INTO productos VALUES (23, 鈥楲eche de vaca鈥, 4, 鈥2323 T56 33鈥, 2500, 500, true);
INSERT INTO productos VALUES (24, 鈥楺ueso鈥, 4, 鈥7786 K19 56鈥, 4000, 300, true);
INSERT INTO productos VALUES (25, 鈥楬uevos de gallina feliz鈥, 4, 鈥3478 M74 01鈥, 400, 1000, true);
INSERT INTO productos VALUES (26, 鈥楥lara de huevo鈥, 4, 鈥7932 R31 46鈥, 3200, 200, true);
INSERT INTO productos VALUES (27, 鈥楽uero coste帽o鈥, 4, 鈥5463 W23 33鈥, 9000, 110, true);
INSERT INTO productos VALUES (28, 鈥楢gua鈥, 5, 鈥8965 I32 11鈥, 2000, 600, true);
INSERT INTO productos VALUES (29, 鈥楯ugo de naranja鈥, 5, 鈥7445 T87 44鈥, 7400, 200, true);
INSERT INTO productos VALUES (30, 鈥楪aseosa Colombiana鈥, 5, 鈥3434 R34 63鈥, 3100, 175, true);
INSERT INTO productos VALUES (31, 鈥楯ugo de Lulo鈥, 5, 鈥9753 W33 19鈥, 8250, 630, true);
INSERT INTO productos VALUES (32, 鈥楾ea鈥, 5, 鈥9836 F35 69鈥, 1900, 450, true);
INSERT INTO productos VALUES (33, 鈥楥erveza鈥, 6, 鈥3432 G67 21鈥, 2100, 800, true);
INSERT INTO productos VALUES (34, 鈥楾equila鈥, 6, 鈥9529 E45 98鈥, 65000, 764, true);
INSERT INTO productos VALUES (35, 鈥楻on鈥, 6, 鈥1947 R07 53鈥, 55000, 240, true);
INSERT INTO productos VALUES (36, 鈥楢guardiente Antioque帽o鈥, 6, 鈥3160 A54 94鈥, 40000, 480, true);
INSERT INTO productos VALUES (37, 鈥榁ino鈥, 6, 鈥7891 W46 95鈥, 82000, 560, true);
INSERT INTO productos VALUES (38, 鈥楥rema dental鈥, 7, 鈥6310 C99 73鈥, 7500, 200, true);
INSERT INTO productos VALUES (39, 鈥楯ab贸n de manos鈥, 7, 鈥9371 J14 75鈥, 4900, 90, true);
INSERT INTO productos VALUES (40, 鈥楨njuague bucal鈥, 7, 鈥1942 T68 01鈥, 12000, 105, true);
INSERT INTO productos VALUES (41, 鈥楽hampoo鈥, 7, 鈥6789 W01 23鈥, 9300, 200, true);
INSERT INTO productos VALUES (42, 鈥楧esodorante鈥, 7, 鈥7333 S21 36鈥, 6900, 85, true);
INSERT INTO productos VALUES (43, 鈥楢rroz鈥, 8, 鈥4676 I83 00鈥, 3500, 600, true);
INSERT INTO productos VALUES (44, 鈥楲entejas鈥, 8, 鈥7333 S21 36鈥, 3000, 560, true);
INSERT INTO productos VALUES (45, 鈥楬arina鈥, 8, 鈥7333 S21 36鈥, 1800, 300, true);
INSERT INTO productos VALUES (46, 鈥楽al鈥, 8, 鈥7333 S21 36鈥, 1400, 500, true);
INSERT INTO productos VALUES (47, 鈥楢ceite鈥, 8, 鈥7333 S21 36鈥, 6500, 135, true);
INSERT INTO productos VALUES (48, 鈥楥ereal鈥, 8, 鈥4673 K53 98鈥, 7000, 75, true);
INSERT INTO productos VALUES (49, 鈥楩rijol鈥, 8, 鈥2745 F40 45鈥, 8200, 270, true);
INSERT INTO productos VALUES (50, 鈥楥af茅鈥, 8, 鈥6351 R33 92鈥, 7200, 400, true);

鈥 CLIENTES
INSERT INTO clientes VALUES (鈥4546221鈥, 鈥楯ohannes鈥, 鈥楰epler鈥, 3104583224, 鈥楥l 3 # 33 - 33鈥, 鈥[email protected]鈥);
INSERT INTO clientes VALUES (鈥2552243鈥, 鈥楪alileo鈥, 鈥楪alilei鈥, 3462257293, 鈥楥l 1 # 11 - 11鈥, 鈥[email protected]鈥);
INSERT INTO clientes VALUES (鈥983824鈥, 鈥楴icol谩s鈥, 鈥楥opernico鈥, 3019392466, 鈥楥l 2 # 22 - 22鈥, 鈥[email protected]鈥);

鈥 COMPRA
INSERT INTO compras VALUES (1, 鈥4546221鈥, TO_TIMESTAMP(鈥10/08/1992 17:30:00鈥,鈥楧D/MM/YYYY HH24:MI:SS鈥), 鈥楨鈥, 鈥樷, 鈥楶鈥);
INSERT INTO compras_productos VALUES (1, 1, 10, 3000, true);
INSERT INTO compras_productos VALUES (1, 36, 1, 40000, true);
INSERT INTO compras_productos VALUES (1, 27, 1, 9000, true);
INSERT INTO compras_productos VALUES (1, 49, 2, 16400, true);
INSERT INTO compras_productos VALUES (1, 24, 1, 4000, true);

鈥 SE REINICIAN LAS SECUENCIAS SEG脷N LOS DATOS INICIALES
SELECT setval(鈥榩ublic.productos_id_producto_seq鈥, 50, true);
SELECT setval(鈥榩ublic.categorias_id_categoria_seq鈥, 8, true);
SELECT setval(鈥榩ublic.compras_id_compra_seq鈥, 1, true);

Tuve problemas con power shell despu茅s que cree el app en heroku lo solucione con el siguiente comando git inity luego heroku git:remote -a miproyecto.

Para instalar Heroku: npm install -g heroku
En caso de que de un error de 鈥渃ommand not found: heroku鈥

Para que no tengan que buscar la bd siempre , al crear el server van a

advanced
en DB restriction pegan el nombre de la bd
y dan en save
asi solo les aparecera su db , y no tendrar que buscarla cuando la tengan que gestionar
馃槂

server.port=${PORT}

Database

spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}