2012-02-29 5 views
0

oracleにタイプが "NUMBER"のデータベース列があります。longまたはlongを使用してoracleの「NUMBER」列をマップしますか?

ロングまたはロングでマップしたいです。しかし、どの型を使うべきかわからない、プリミティブ型またはObject型?大会はありますか?私の場合は、値が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値を受け入れる必要があるかどうかに依存するということを得ました。

このデータベース列はNULL可能ではありませんが、実際には主キーです。 OK、別の質問が表示されますが、一致する行が0の値か一致する行があるかどうかをどのように知ることができますか? java.sql.ResultSet.getLonglongの値を返し、列の値がSQL NULLの場合は0が返されます。または、そのような列に0を有効にすることは悪い習慣ですか?

答えて

3

Longは、nullの値を許可します。ここで、longはnullであってはなりません。だから私はあなたのデータベースの列を一致させる - それはnullableかどうか?編集した質問への

編集:

値がデータベースに実際に0またはnullだったかどうかを確認するには、ResultSet.wasNullを使用しています。

+0

お返事ありがとうございます。私は更新しました。 –

+0

@GrantZhu - 私の更新答えを見てください。 – ziesemer

+0

ありがとう、たくさんの男。 –

1

nullを受け入れるかどうかはわかります。

1

通常は、必要なものが値で、その値がnullでない場合は、オブジェクトではなくプリミティブ型を使用します。すべてのコンバージョンニーズに対して、クラス(String.parseなど)があります。

0

Longオブジェクトは、長いプリミティブよりも多くのメモリを消費します。 Nullable属性に問題がない場合は、プリミティブデータ型を使用する必要があります。

関連する問題