我User
实体类包含密码散列字段,这是一个字节数组具有固定长度(32,因为它是一个SHA-256哈希值)。存储一个散列作为字节数组JPA
@Entity
public class User {
@Column(nullable=false)
private byte[] passwordHash;
...
}
正如你所看到的,我没有用任何特殊的注解,只是一个NOT NULL。
这个工程,但它会执行?我的模式是由Hibernate生成的,但我不知道它产生了什么(我目前正在使用内存中的HSQL数据库)。
我担心的是,由于它不知道它是一个固定长度的数组(length
注释字段仅适用于字符串),因此它会将此散列存储在BLOB字段中,该字段将添加到记录为指针(如果我正确理解数据库的工作原理)。
这是真的,我该如何改变这种情况?我是否应该将散列作为一个字符串进行编码,并使用base64或hex进行编码,从而接受这种小的性能/正确性影响?
为什么不用实际的目标数据库尝试它,看看它产生了什么? – skaffman 2010-09-29 12:46:33
@skaffman:我已经改变了数据库,MySQL和它生成一个TINYBLOB列 – 2010-09-29 13:04:24
我需要的是BINARY(32) – 2010-09-29 13:15:43