2012-02-29 4 views
0

oracle에서 유형이 "NUMBER"인 데이터베이스 열이 있습니다.오라클의 "NUMBER"열을 길게 또는 길게 매핑 하시겠습니까?

나는 길고 긴하여 매핑 할. 하지만 어떤 유형, 원시 유형 또는 객체 유형을 사용해야하는지 잘 모르겠습니다. 국제 대회가 있습니까? 내 경우는 값이 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 값 비슷하게 일치하는 행과 일치하는 행을 얻을 경우 OK, 또 다른 질문가 나타납니다 는 어떻게 알 수 있습니까? java.sql.ResultSet.getLonglong 값을 반환하고, 컬럼의 값이 SQL NULL 인 경우 0이 반환됩니다. 또는 그러한 열에서 0을 유효하게 사용하는 것은 나쁜 습관입니까?

답변

3

Longnull 값을 허용합니다. 여기서 long은 null이 아니어야합니다. 그래서 당신의 데이터베이스 칼럼을 일치시킬 것입니다 - 그것은 nullable 또는 아닙니다? 편집 질문에

편집 : 값이 데이터베이스에 실제로 0 또는 null 인 경우

확인하려면, ResultSet.wasNull를 사용합니다.

+0

답변 해 주셔서 감사합니다. 나는 갱신했다. –

+0

@ GrantZhu - 업데이트 된 답변보기 – ziesemer

+0

고마워요. –

1

그것은 아래로 당신이 널 (null) 여부를 수락 할 경우에 제공됩니다.

1

보통, 당신은 당신이 원하는 유일한 것은 값의 경우, 기본 유형, 그리고 개체를 사용하려면, 그 값은 null되지 않습니다. 모든 전환 요구에 대해 클래스가 있습니다 (예 : String.parse).

0

Long 객체는 긴 프리미티브보다 어느 정도의 메모리를 소비하는지 고려해야합니다. Nullable 특성에 문제가 없다면 원시 데이터 형식을 사용해야합니다.