我有一个数据库列,其类型在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属性不是问题,则应该使用基元数据类型。