使用长或长在预言机中映射"NUMBER"列?



我有一个数据库列,其类型在oracle中为"NUMBER"。

我想按long或long绘制地图。但我不确定应该使用哪种类型,基元类型还是对象类型?有会议吗?我的情况是,值是我唯一想要的DAO方法:

public class SampleDAO{
  public long fetchNumberValue(){
    //Is it better to return long value instead of Long?
  }
}

如果我想把这个值包装在一个对象中呢?

public class SampleObject(){
  //Is it better to use Long to use methods like hashCode() inherited from Object?
  private Long value;       
}

编辑:
谢谢大家的回答。我明白了,这取决于我是否需要接受空值。

这个数据库列不可以为null,实际上它是主键。它可能有0、1、2等值。好吧,出现了另一个问题,我如何知道我得到的是一个0值的匹配行还是没有匹配行?java.sql.ResultSet.getLong返回一个long值,如果列的值是SQL NULL,则返回0。还是在这样的列中使用0是一种糟糕的做法?

Long将允许null值,其中as long不得为null。所以我会将它与你的数据库列匹配——它是否可以为null?

编辑到编辑后的问题:

要检查数据库中的值实际上是0还是null,请使用ResultSet.wasNull

这取决于是否接受null。

通常,如果您唯一想要的是值,并且该值不会为null,那么您希望使用基元类型,而不是对象。对于所有的转换需求,您都有一个类(如String.parse).

您还应该考虑到,与长基元相比,长对象消耗更多的内存(不确定数量)。如果Nullable属性不是问题,则应该使用基元数据类型。

最新更新