Mi clase de entidad User
contiene el campo hash de contraseña, que es una matriz de bytes con una longitud fija (32 ya que es un hash SHA-256).Almacenamiento de un hash como matriz de bytes con JPA
@Entity
public class User {
@Column(nullable=false)
private byte[] passwordHash;
...
}
Como puede ver, no lo he anotado con nada especial, simplemente un NOT NULL.
Esto funciona, pero ¿funcionará? Mi esquema es generado por Hibernate, pero no sé exactamente qué genera (actualmente estoy usando una base de datos HSQL en memoria).
Me preocupa que, ya que no sabe que se trata de una matriz de longitud fija (el campo de la length
Column
anotación se aplica únicamente a las cadenas), almacenará este hash en un campo BLOB que se añade en el registrar como un puntero (si entiendo correctamente cómo funcionan las bases de datos).
¿Es esto cierto y cómo puedo cambiar esto? ¿Debería codificar el hash como una cadena, con base64 o hex, aceptando el pequeño impacto de rendimiento/corrección de eso?
¿Por qué no lo intentas con la base de datos real de destino y ves lo que genera? – skaffman
@skaffman: He cambiado la base de datos a MySQL y genera una columna TINYBLOB –
Lo que necesito es BINARY (32) –