No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conectar el proyecto a la base de datos

3/25
Recursos

Aportes 27

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

YAML es un formato práctico para especificar datos de configuración jerárquicos.

  • Recomiendo renombrar el

application.properties —> application.yaml

  • Utilizar la siguiente configuración para PostgreSQL en el archivo de configuración application.yaml
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/pizza
    username: admin
    password: Jaime2030
  jpa:
    hibernate:
      ddl-auto: update
      dialect: org.hibernate.dialect.PostgreSQLDialect
      jdbc:
        lob.non-contextual-creation: true
    properties:
      hibernate:
        show_sql: true 

Para los que trabajan en sql server la linea de codigo sería : spring.datasource.url=jdbc:sqlserver://localhost:<port>;databaseName=<NombreDeBaseDeDatos>

A mí no me funcionaba, hasta que ingresé:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/pizzeria?createDatabaseIfNotExist=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.datasource.username=<tu-usuario>
spring.datasource.username.password=<tu-clave>

Para los que prefieren trabajar con postgresql tienen que reemplazar en application.properties

spring.datasource.driver-class-name=org.postgresql.Driver

spring.datasource.url=jdbc:postgresql://localhost:<port>:<NombreDeBaseDeDatos>

por defecto el puerto se usa 5432 … y en el archivo build.gradle agregamos

runtimeOnly 'org.postgresql:postgresql'

la funcion de crear la base de dato me toco realizarla manualmente desde postgresql

Hasta este punto recomiendo mucho Docker, así nos evitamos instalaciones de cada motor de base de datos y con simples lineas de codigo ya tendríamos nuestra base de datos montada en un contenedor y lista para usar.
Aquí estaría la creación de la base de datos con docker:

docker volume create mysql-volume
docker run -d -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<contraseña que quieras asignar > --name mysql-container mysql:latest

Ya con esto podemos probar si la conexión es exitosa y listo a seguir aprendiendo. Sin embargo, recomiendo el curso de Docker.

https://platzi.com/cursos/docker/

URL Instalador 3 Mb :

https://dev.mysql.com/downloads/installer/

  1. Instalar

  2. Abrir y dar click en catalog.

  3. Se abre una nueva ventata, Click en Execute.

  4. Se regresa a la ventana anterior, Click en “Add” seleccionar

  5. MySQL Server.

  6. Seleccionar la ultima versión, instalar y finalizar.

En lugar de instalar mysql en el computador seria mejor utilizar docker, y manejar la conexion en el docker-compose file

El nombre de la base de datos que se va a usar es pizzería, si estas usando mysql puedes poner le opción de createDatabaseIfNotExist=true para que cree la base de datos automáticamente, en la opción spring.jpa.hibernate.ddl-auto la vamos a poner a update para que nos cree las tablas pero no borre información

Tienen que tener la base de datos instalada, si utilizan otra base de datos recuerden que el código createDatabaseIfNotExist=true solo funciona con mysql,
pueden crear manual mente la tabla y la base en donde estará la tabla cualquier duda no duden en preguntar por haca

Estas fueron las configuraciones que en mi caso necesite

spring.datasource.url=jdbc:mysql://localhost:3306/pizzeria
spring.datasource.username=root
spring.datasource.password=*****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

Si quieren usar .env
dotenv
main

public class PlatziPizzeriaApplication {

	public static void main(String[] args) {
		Dotenv dotenv = Dotenv.configure().load();
		dotenv.entries().forEach(entry -> System.setProperty(entry.getKey(), entry.getValue()));
		SpringApplication.run(PlatziPizzeriaApplication.class, args);

	}

}

aplication

spring.datasource.url=jdbc:mysql://localhost:3306/pizzeria
spring.datasource.username=${USER_SQL}
spring.datasource.password=${PASSWORD_SQL}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

Si tiene Mysql 8 deben de agregar la siguiente linea a la configuración

spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

Como crear una base de datos MySql con Docker compose

La base de datos se crea con un volumen para poder almacenar los datos en forma persistente dentro de nuestro sistema de archivos

Tener instalado el docker-desktop en el caso de windows y Mac. Los usuarios linux ya saben que hacer.

crear el archivo desde la linea de comandos, para el caso linux & mac

touch docker-compose.yml 

Pegar el siguiente texto dentro del archivo

NOTA: Las lineas que comienzan con # son comentarios que solo sirven como ayuda memoria

#################
### desde la consola de comandos ejecutar
#################

#################
### inicial el contenedor ###
#################
# docker compose up mysql

#################
### inicial el contenedor sin los logs de consola ###
#################
# docker compose up mysql -d

#################
###detener el contenedor###
#################
# docker compose down

#################
#################
#cambiar a gusto las credenciales del usuario
#################

version: '3.8'
services:
  mysql:
        image: mysql:latest
        command: --default-authentication-plugin=mysql_native_password
        volumes:
        - "./mysql-data/db:/var/lib/mysql"
        restart: always        
        ports:
            - 3306:3306
        environment:
            MYSQL_ROOT_PASSWORD: rootpw
            MYSQL_DATABASE: pizzeria
            MYSQL_USER: pizza
            MYSQL_PASSWORD: 123456

Un administrador de base de datos recomendable para todos los Sistemas operativos populares, funciona muy bien y además tiene muchos atajos de teclado, es el dbeaver.

Saludos

me funcionó sin poner el puerto

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/pizzeria?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=*****

Hola tú

Por si no te autocompleta algunos campos en el archivo application.properties, puedes usar el siguiente plugin: wl Spring Assistant, no es tan bueno como el del profesor (creo que tiene IntelliJ Idea Ultimate), pero es muy bueno para la versión community.

La siguiente propiedad permite mostrar en la consola del IDA la instrucción SQL que se está ejecutando:

spring.jpa.show-sql=true

Si se desea verla con un mejor formato y estructura, se puede agregar también la siguiente propiedad:

spring.jpa.properties.hibernate.format_sql=true

Para quienes tengan problemas con Dialect pueden agregar la siguiente propiedad:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect 

Tener en cuenta que la versión del dialecto debe ser la del MySQL que tengan instalado en sus maquinas

Si alguien se conectara un dia con AWS Elastic Beanstalk: ```js # Database Las variables de entorno se encuentran en AWS Elastic Beanstalk spring.datasource.url=jdbc:postgresql://${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME} spring.datasource.username=${RDS_USERNAME} spring.datasource.password=${RDS_PASSWORD} ```# Database Las variables de entorno se encuentran en AWS Elastic Beanstalk spring.datasource.url=jdbc:postgresql://${RDS\_HOSTNAME}:${RDS\_PORT}/${RDS\_DB\_NAME} spring.datasource.username=${RDS\_USERNAME} spring.datasource.password=${RDS\_PASSWORD}
Para facilitar la instalación de la DB así como su administración les compoarto el docker-compose.yml ```js version: '3.9' # mysql services: db: image: mysql:8.0.37-bookworm container_name: mysql_db environment: - MYSQL_ROOT_PASSWORD=123456789 - MYSQL_DATABASE=pizzeria ports: - 3306:3306 volumes: - spring-data-access:/var/lib/mysq l workbench: image: linuxserver/mysql-workbench:8.0.38 container_name: mysql_workbench depends_on: - db environment: - PUID=1000 - PGID=1000 ports: - 3333:3000 volumes: - spring-data-access-ui:/config volumes: spring-data-access: spring-data-access-ui: ``` Para ejecutar docker `docker-compose up -d` Entrar a MySQL Workbench `localhost puerto 3333`
Que copado el detalle que se haya incluido tanto las pizzas vegetarianas como las veganas en el proyecto! Pequeños detalles que dan satisfacción :)
Configuración para conectar al SQL SERVER `spring.application.name=pizzeria` `spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver` `spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=<nombrebasedatos>;encrypt=true;trustServerCertificate=true` `spring.datasource.username=<user>` `spring.datasource.password=<contraseña>` `spring.jpa.hibernate.ddl-auto=update` `spring.jpa.show-sql=true` Será necesario habilitar el TCP/IP (seguir los pasos del link) <https://help.dugeo.com/m/Insight/l/438913-troubleshooting-enabling-tcp-ip-in-the-sql-server> Ademas tendras que descargar el mssql-jdbc actual en mi caso descargue la version 12.6.1.jre11, link de descarga: <https://learn.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver16> Posterior tendras que agregar la libreria al proyecto y agregar la linea de codigo al build.gradle en las dependencies: `implementation 'com.microsoft.sqlserver:mssql-jdbc:12.6.1.jre11'`
Para SQL Server. `# Database` `spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver` `spring.datasource.url=jdbc:sqlserver://;serverName=localhost;databaseName=PizzeriaDev;encrypt=true;trustServerCertificate=true;` `spring.datasource.username=sa` `spring.datasource.password=TuContrasena` `spring.jpa.hibernate.ddl-auto=update` `spring.jpa.show-sql=true` Validar que la configuración TCP/IP de SQL Server este habilitada. En caso contrario deberá habilitarla. Habilitar TCP/IP: <https://help.dugeo.com/m/Insight/l/438913-troubleshooting-enabling-tcp-ip-in-the-sql-server>
![](https://static.platzi.com/media/user_upload/image-7602b4f1-f94f-4baf-bd83-c88394a5a52b.jpg)```js porfavor ayuda porque ese ERROR ? ```
como siempre capo mi estimado, gracias a ti estoy perfeccionandome, detallado el curso un crack
Hola, recomiendo mucho utilizar docker-compose, de esta manera no andar peleando con configuraciones e instalaciones que después resultan mal, les comparto mi configuración de mi **docker-compose.yml**: `versión: '3.3'` `services:` ` db:` ` image: mysql:5` ` container_name: mysql_container` ` environment:` ` MYSQL_ROOT_PASSWORD: admin123` ` MYSQL_DATABASE: course_spring_data_jpa` ` ports:` ` - "3306:3306"` ` volumes:` ` - mysql_data:/var/lib/mysql` ` phpmyadmin:` ` image: phpmyadmin/phpmyadmin` ` container_name: phpmyadmin_container` ` environment:` ` PMA_ARBITRARY: 1` ` ports:` ` - "8080:80"` ` depends_on:` ` - db` `volumes:` ` mysql_data:`
muy claro. que bueno el nivel de abstraccion de la herramienta

Yo me conecté con PostgreSQL usando la misma configuración del proyecto del curso anterior

Configuración para conectar al SQL SERVER ```js spring.application.name=pizzeria spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=<nombrebasedatos>;encrypt=true;trustServerCertificate=true spring.datasource.username=<user> spring.datasource.password=<contraseña> spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true ```Será necesario habilitar el TCP/IP (seguir los pasos del link) <https://help.dugeo.com/m/Insight/l/438913-troubleshooting-enabling-tcp-ip-in-the-sql-server> Además tendrás que descargar el mssql-jdbc actual en mi caso descargue la versión 12.6.1.jre11, link de descarga: <https://learn.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver16> Posterior tendrás que agregar la librería al proyecto y agregar la linea de código al build.gradle en las dependencies: ```js implementation 'com.microsoft.sqlserver:mssql-jdbc:12.6.1.jre11' ```