hibernate - for - ID de entidad JPA: largo o largo
jpa update entity (2)
Considero que Long es mejor, ya que es más correcto verificar si una entidad tiene identidad persistente al comparar con el valor null
(en MySQL puede tener una ID de valor 0). También algunas bibliotecas como Spring se basan en una ID de tipo Long (por defecto) en su lógica. Vea esta implementación para un ejemplo.
La pequeña ventaja de la primitiva: toma un poco menos de espacio.
PD: Ambos son correctos y compatibles de acuerdo con la especificación JPA y las respuestas a esta pregunta de alguna manera se basan en las opiniones.
¿El ID de su entidad debe ser largo (tipo primitivo) o largo (tipo de objeto)?
- El ID es la clave principal de mi tabla y nunca es ''nulo'' en la base de datos.
- Mis compañeros de trabajo sugieren usar un tipo de objeto largo.
- La herramienta Hibernate Reverse Engeneering genera un tipo primitivo largo para id de forma predeterminada.
¿Qué elegir? largo o largo?
@Entity
@Table(name = "COUNTRY")
public class CountryEntity implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
private long id;
@Column(name = "NAME")
private String name;
@Column(name = "CURRENCY")
private String currency;
@Column(name = "PEOPLE")
private Long people;
@Column(name = "SIZE")
private Long size;
public CountryEntity() {
}
Preferiría Long, por la sencilla razón de que si permites que la base de datos genere identificadores para ti (lo cual deberías), puedes notar que un objeto CountryEntity recientemente instanciado aún no se ha conservado marcando id==null
. Si usa long, entonces id siempre tendrá un valor no nulo (inicialmente 0), que cambiará al persistir la entidad.