No tienes acceso a esta clase

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

Crear entidades con JPA

4/25
Recursos

Aportes 16

Preguntas 7

Ordenar por:

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

Para posgresql se cambia los sgtes tipos de datos

@Column(columnDefinition = "smallint")  // para mysql es "tinyint"
    private Boolean vegetarian;

@Column(nullable = false, columnDefinition = "timestamp")	// para mysql es "datetime"
    private LocalDateTime date;

Estructura de la base de datos:

Aca hubiera sido importante explicar un poco que hace lombok y por qué se usa. yo lo entendi porque vi el curso pasado donde haciamos los getters y setters de la forma tradicional, pero mucha gente llega de una vez a este curso

Dato:

  • No es necesario especificar el nombre de la columna en @Column cuando sera traducido a snake_case, Spring hace la conversion automaticamente, es decir:

idPizza sera traducido como id_pizza.

Para probar solo escribe:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Integer idPizza;

Hola tú,

Si no estás tan familiarizado con Lombok, al usar las anotaciones

@Getter @Setter 

lo que hacen es generar automáticamente los getters y setters de cada una de las propiedades, esto ayuda a que el código sea más legible y no que apenas abres la clase, ves el chorrero de getters y setters, otra ventaja es que si a la clase le añades una propiedad pero olvidaste añadir el get y set, Lombok usando estas anotaciones lo hace automáticamente por ti.

Me hubiera encantado haber empezado por este curso en vez de arrancar con el anterior. La estructura orientada a dominio me confundió muchísimo. Me parece que este curso está increíblemente más claro. Dejo claro que el profesor trabaja increíblemente bien en ambos cursos (asdasd), solo que el anterior tuvo un nivel de complejidad muchísimo más alto.

Excelente eso de dejar el diagrama en pantalla profe Alejandro, muchas gracias.

no se recomienda @Data ya que lombok gestiona automáticamente los métodos equals() y hasCode() lo cual es una mala practica hacerlo a través de lombok para entidades en su lugar se coloca @Getter @Setter @NoArgsConstructor

Por que no definir method como “Character” en vez de “String”? Ya en base de datos estamos diciendo que es CHAR(1) deberiamos hacer lo mismo en codigo para ocupar menos memoria

No se si mi resolucion del reto este bien pero aqui el codigo!

Entidad Customer

package com.platzi.pizza.persistance.entity;


import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "customer")
public class CustomerEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_customer", length = 15, nullable = false)
    private String idCustomer;

    @Column(length = 60, nullable = false)
    private String name;

    @Column(length = 100, nullable = false)
    private String address;

    @Column(name = "phone_number", length = 20, nullable = false)
    private String phoneNumber;
}

Entidad: Order_item

package com.platzi.pizza.persistance.entity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "order_item")
public class OrderItemEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_item", nullable = false)
    private Integer idItem;

    @Column(name = "id_order", nullable = false)
    private Integer idOrder;

    @Column(name = "id_pizza", nullable = false)
    private Integer idPizza;

    @Column(nullable = false, columnDefinition = "Decimal(2,1)")
    private Double quantity;

    @Column(nullable = false, columnDefinition = "Decimal(5,2)")
    private Double price;
}

public class CustomerEntity {
@Id
@Column(name = “id_customer”, nullable = false, length = 15)
private String idCustomer;

@Column(nullable = false, length = 60)
private String name;

@Column(length = 100)
private String address;

@Column(nullable = false, length = 50, unique = true)
private String email;

@Column(name = "phone_number", length = 20)
private String phoneNumber;

}
Footer

Lo que hay que tener en cuenta es que si se definen los tipos de campos y la creación en la entidad, la portabilidad a otra base de datos como postgres ya no será transparente e implicará modificar código de la entidad. Como aprendizaje muy util.
use postgresql y lo hice de esta forma ![](https://static.platzi.com/media/user_upload/image-98eed22a-d71e-4664-a443-37d532a8e674.jpg)
Para SQL Server yo lo utilice de esta manera. ```js @Column(nullable = false, columnDefinition = "bit") private boolean vegetariana; ```Hibernate en automático nombra las columnas y nombre de tablas en snake\_case. Adicional ordena de manera automática las columnas. Más información. <https://robertniestroj.hashnode.dev/ordering-columns-in-a-table-in-jpahibernate>
Qué usas para el autocompletado, a mi no me salen algunas cosas.