2012-02-29 4 views
0

나는 보통 noob 질문을 게시하지 않지만 .... 프로그래밍을 시작한 이래로 뭔가 놓치고 있습니다."binary"데이터 유형에 대해

몇 가지 속성 이름, 설명 등으로 pojo 개체 개체를 상상해 봅시다. 이 중 하나는 "IN"또는 OUT 만 될 수있는 "방향"입니다.

해당 속성에 가장 적합한 데이터 형식은 무엇입니까? 부울을 사용할 수 있습니다. 예를 들어 in은 true로, false는 out으로 가정합니다. 아니면 하나의 문자 'I'와 'O'또는 'enum'을 사용할 수 있습니다.

고려 사항이 객체를 최대 절전 모드에서 사용할 것이고, 속성은 테이블의 컬럼으로 이동합니다. 그래서 ... 열의 최상의 데이터 형식은 무엇입니까?

내가 enum이 목적에 가장 적합 생각

+0

가 http://stackoverflow.com/questions/135845/are-보기 불리언 메서드 - 인수 - 받아 들일 수없는 – skaffman

답변

2

나는 열거 형을 제안 할 것이다.

장점 :

  • 은 나중에 의 변수 (즉, 필요하게한다)의 가능한 값들의 세트를 확장 할 수있다.
  • 값의 이름에는 값의 의미에 대한 중요한 의미가 들어 있습니다.
  • 프로그래밍 언어가 형식 확인에 도움이됩니다. 물론

, 그건 당신이

2

주셔서 감사합니다.

public enum STATE {IN, OUT} 

언제든지 데이터베이스에 저장할 때와 동일한 문자열을 얻을 수 있습니다.

1

나는 데이터베이스 테이블에 String로 변환 열거 값을 enum을 사용하고 저장하는 것입니다 ... 당신의 열거 값에 대한 설명이 포함 된 이름을 사용한다는 뜻. 자세한 내용은 Java Enums에 대한 기사를 읽어보십시오.

1

당신은 char 형과의 열을 설정, 당신은 당신의 DB와 당신의 엔티티 내에서 최대 절전 모드/JPA와 문자 컬럼에 바인딩 할 수있는 방향을

public enum Direction { 
    IN('i'), OUT('o'); 

    final char dir; 
    Direction(char dir) { 
     this.dir = dir; 
    } 

    public static Direction find(char c) { 
     for (Direction d : Direction.values()) { 
      if (d.dir == c) 
       return d; 
     } 
     throw new IllegalArgumentException("Not found: " + c); 
    } 
} 

을 나타내는 열거를 가지고 있고, 노출 될 수 있습니다 getter/setter로 열거 형 만 열거하십시오.

@Entity 
public class MyEntity { 
    @Column 
    private char direction; 

    public Direction getDirection() { 
     return Direction.find(direction); 
    } 

    public void setDirection(Direction dir) { 
     this.direction = dir.dir; 
    } 
} 
+0

나는 그것에 관심이 있습니다 : 귀하의 코드에서 암시 적 변환입니까? 그것은 단순히 그렇게 작동합니까? :) –

+0

데이터베이스는 열거 형에 대해 알지 못하고 단순히 문자 (열거 형의 내부 표현)를 저장합니다. 그러나 코드 내에서 엔티티는 내부 표현이 아닌 열거 형을 노출합니다. 그래, 맞아. – Alex

1

enum을 사용하십시오. 최대 절전 모드를 들어, 다음과 같은 매핑을 사용할 수 있으며, 자동으로 DB에서 검색/저장하기 위해 열거 값의 이름을 사용합니다 :

 <type name="org.hibernate.type.EnumType"> 
      <param name="enumClass">foo.MyEnum</param> 
      <!-- 12 == java.sql.Types.VARCHAR --> 
      <param name="type">12</param> 
     </type> 
관련 문제