Java开发通常我们在对实体类与数据库做映射的时候,会发现存在两种数据类型
一种基本数据类型:byte、short、char、int、long、float、double和boolean
另外一种是包装数据类型:Bety 、Short、 Character、 Integer 、Long、 Float、Double和Boolean
当然基本数据类型和包装数据类型之间可以方便的转换,也就是Java中所谓的装箱,例如:
Integer a = 10 ; //这是自动装箱
int b = new Integer(10) ; //这是自动拆箱
这里主要是讨论在持久化类中,如何定义属性的数据类型。这里主要以int和Integer为类说明:
如基本类型将无法表达null值,所有的基本数据类型的默认值都不是null,int 定义的属性a ,它的默认值就是0,这样一来如果这个属性没有赋值,它在数据库中的表现形式就是0,如果这个属性为age表示年龄,那么0就表示其未知。而且在某些情况下0表示特殊的含义,比如状态属性status=1 or 0,此时如果默认值为0就可能会存在歧义,本身它没有被赋值,就应该显示null才比较合理。
对于此情况,我们应该在持久化类也就是实体类中将数据类型都定义为包装类型,这样持久化到数据库中之后默认值就都是null,而非0。。。
关于基本数据类型和包装数据类型的优点和缺点:
1、对于基本数据类型来说,使用方便,可以直接把它显示到用户UI上,而且对于数字类型,可以直接进行运算;而对于包装数据类型来说,使用起来比较麻烦,特别是数字类型,在进行运算时,必须先转换成基本类型才行。
备注:在JDK1.5中,数字类型的包装类型也可以直接进行运算了,不用进行类型转换了,大大简化了包装类型。同时也说明,使用包装较为优先了。
2、基本类型的缺陷就是无法表示null值,也就是空值,而且所有的基本数据类型的默认值都不是null,所以从这一点来说,包装数据类型可以表现null值,这就是它的优势了。
所以通常情况下,在定义持久化类中的属性时,一定要根据实际情况来选择数据类型,不要让数据存在歧义~