zoukankan      html  css  js  c++  java
  • Java中基本数据类型和包装数据类型在Hibernate中使用

    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值,这就是它的优势了。

    所以通常情况下,在定义持久化类中的属性时,一定要根据实际情况来选择数据类型,不要让数据存在歧义~

  • 相关阅读:
    Web Service测试工具小汇
    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
    Android--消除“Permission is only granted to system apps”错误
    android设置gps自动开启
    Android中实现日期时间选择器(DatePicker和TimePicker)
    android在点击EditText的时候始终不弹出软件键盘
    Android检测服务是否运行
    Android检测网络状态,判断当前网络是否可用
    wap测试学习
    【转】十二个移动App云测试服务盘点
  • 原文地址:https://www.cnblogs.com/candle806/p/2834041.html
Copyright © 2011-2022 走看看