2012-02-29 131 views
0

我在oracle中有一个数据库列,其类型是“NUMBER”。使用long或Long来映射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;  
} 

编辑:
感谢所有的答案。我知道这取决于我是否需要接受空值。

此数据库列不可为空,实际上它是主键。它可能有这样的值,如0,1,2等...好吧,另一个问题出现,我怎么知道如果我得到匹配的行与0值或没有匹配的行? java.sql.ResultSet.getLong返回long值,如果该列的值为SQL NULL,则返回0。或者在这样的列中有0有效是不好的做法?

回答

3

Long将允许null值,其中long不能为空。所以我会匹配你的数据库列 - 是否可以空?

编辑的编辑问题:

要检查值实际上0null在数据库中,使用ResultSet.wasNull

+0

感谢您的回答。我已更新。 – 2012-02-29 02:56:10

+0

@GrantZhu - 查看我更新的答案。 – ziesemer 2012-02-29 03:02:54

+0

非常感谢。 – 2012-02-29 03:22:15

1

这归结于如果你想接受空值或不。

1

通常情况下,您想使用原始类型,而不是对象,如果唯一想要的是值,并且该值不会为空。对于你所有的转换需求,你有这个类(比如String.parse)。

0

你还应该考虑到Long对象消耗更多的内存 - 不确定在多长时间 - 比长基元。如果Nullable属性不是问题,则应使用基本数据类型。

相关问题