2017-07-24 80 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

有一个简单的经验法则:当它给有经验的读者带来惊喜时,这是不好的做法。

警告:公司内部熟知的做法可能不会让该公司的有经验的用户感到惊讶。但是你仍然有这个“惊喜”问题;例如,当新员工进入该团队/公司时。

这种方法的真正问题是:它迫使你的代码有知识,否则将不需要!含义:代码定义了该数据库条目的含义。当数据库字段具有布尔类型时,除此之外不需要任何解释。