我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