Definición de columnas con @Column

Tutorial de JPAUna de las principales características cuando trabajamos con base de datos es que todas las tablas tienen Columnas, y dichas columnas esta mapeadas contra los atributos de las entidades, para lo cual es necesario que JPA identifique que columna mapea contra cada atributo de la clase y es aquí donde entra @Column.

 

 

@Column

La anotación @Column nos permitirá definir aspectos muy importantes sobre las columnas de la base de datos de la base de datos como lo es el nombre, la longitud, constrains, etc. En caso de no definir esta anotación en los atributos, JPA determinara el nombre de la columna de forma automática mediante el nombre del atributo, por lo que siempre es recomendable establecer esta anotación en todos los atributos de la clase y evitarnos problemas.

 

Las propiedades que podemos definirle a @Column son las siguientes:

  • name: Permite establecer el nombre de la tabla de la base de datos con la que el atributo debe de mapear. A pesar de que ningún atributo de @Column es obligatorio, este atributo siempre recomiendo establecerlo.
  • length: Permite definir la longitud de la columna en caracteres, solo aplica para Strings, en los demás tipos de datos será omitida. Solo se utiliza cuando JPA creará las tablas.
  • insertable: Le indica a JPA si esa columna debe ser tomada en cuenta en los inserts, en caso de ser true, el valor será insertado, en caso contrario el valor será omitido y será colocado el valor default de la columna o null.
  • updatable: Parecido al caso anterior, solo que en este caso la columna se toma en cuenta para operaciones de Update.
  • nullable: Crea una restricción en la tabla (Not Null) para impedir que se inserten valores nulos. Solo se utiliza cuando JPA creará las tablas.
  • precisión:
  • scale: Utilizada únicamente para columnas que deben tener decimales, como valore recibe el número de decimales. Solo se utiliza cuando JPA creará las tablas.
  • table: Esta propiedad es muy avanzada y la analizaremos más adelante. Se utiliza cuando existe herencia en las entidades y las columnas pueden estar distribuidas en más de una tabla.
  • unique: Creara una restricción en la tabla para que sea el valor de esa columna sea única. Solo se utiliza cuando JPA creará las tablas.

 

Para comprender como funciona la anotación @Column retomaremos la entidad Employee que hemos venido analizando en todo el tutorial: Recordemos como la habíamos dejo en las secciones anteriores:

 

Ahora bien, para utilizar el mayor número de características agregaremos un par de atributos más, agregaremos el salario y la fecha de ingreso del empleado. Veamos cómo quedaría:

Veamos que el atributo id, solo requiere definir la propiedad name, pues por default, ya es única, no nula, no actualizable. Por lo que con definir el nombre será necesario.

En el caso del nombre, definimos la propiedad name, le indicamos que no puede ser nulo y le estamos definiendo una longitud de 150 caracteres.

En el caso del salario también ponemos el nombre, le indicamos que el suledo puede tener 2 decimales y que no debe de ser nulo.

Finalmente, en la fecha de registro también establecemos el nombre, pero en este caso veamos que el nombre de la columna es diferente que el de la propiedad y es cuando es especialmente necesario definir la propiedad name, le indicamos que no debe de ser nulo y finalmente, la fecha de ingreso no debe de ser actualizable. Por el momento no tomemos en cuenta la anotación @Temporal, más adelante la estudiaremos

 

Definición de la tabla:

En las imágenes vemos como quedarían las tablas generadas por JPA, veamos que ID es llave primaria y es auto incremental, todas las columnas son not null y el nombre tiene una longitud de 150 caracteres.

JPA @Column

JPA @Column definition

 

NOTA: Este artículo es solo una sección del Tutorial de JPA, para ver el contenido completo de este tutorial regresa al Índice en el botón de abajo.

 

AnteriorÍndiceSiguiente

Artículos relacionados

JPA y los métodos hashCode & equals Por defecto, todos los objetos en Java heredan de la case Object los métodos hashCode y equals los cuales sirvan para identificar si dos variables hac...
JPA – Resource Local transaction Resource Local es un tipo de transaccionalidad que soporta JPA que delegar la responsabilidad de las transacciones al programador, de esta manera, el ...
EntityManager y el archivo persistence.xml En esta sección hablaremos de cómo crear el archivo y como establecer conexión con la base de datos. Cabe mencionar que para fines de practicidad est...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

2 comentarios en “Definición de columnas con @Column

  1. Hola muy buen post! me sirvio mucho.

    Tengo una duda, es necesario definir todas las columnas de la tabla en mi entidad? suponiendo que la tabla ya existe y tiene 9 columnas pero solo necesito 4 en mi aplicación.

    Muchas gracias!

    1. Si, es posible, solo toma en cuenta que al momento de insertar el valor del resto de columnas será NULL, así que deberás tener cuidado que las columnas sean no sean Not Null

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *