2017-07-24 84 views
0

在數據庫中保存VARCHAR(1)是否是一個好主意,其中'0'爲false,'1'爲true?我不這麼認爲,但這是我目前工作的公司的慣例。實體看起來像VARCHAR(1)vs BOOLEAN

@Entity 
public class MyEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Column(name = "my_field") 
    private String myField; 

    // getter-setter 

} 

使用BOOLEAN會不會更好?我從來沒有這樣做過,這與hibernate一起工作如何?

@Entity 
public class MyEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Column(name = "my_field") 
    private boolean myField; 

    // getter-setter 

} 

這是需要的嗎?

+2

如果你想要一些[true/false/file_not_found情境](http://thedailywtf.com/articles/What_Is_Truth_0x3f_),那麼是的,使用VARCHAR(1) – 2017-07-24 11:57:20

+0

是個好主意。使用'VARCHAR (1)'作爲數據庫類型,但使用'String'而不是'boolean'很奇怪,因爲使用的數據庫映射器應該正確映射它。有些還使用1和0的數字,但這也可以通過Hibernate映射。 – Tom

+0

'boolean' best;可能 - 在第二個地方 - 對於任何NULL場景都是'Boolean',我認爲甚至不需要任何理由。 –

回答

0

有一個簡單的經驗法則:當它給有經驗的讀者帶來驚喜時,這是不好的做法。

警告:公司內部熟知的做法可能不會讓該公司的有經驗的用戶感到驚訝。但是你仍然有這個「驚喜」問題;例如,當新員工進入該團隊/公司時。

這種方法的真正問題是:它迫使你的代碼有知識,否則將不需要!含義:代碼定義了該數據庫條目的含義。當數據庫字段具有布爾類型時,除此之外不需要任何解釋。