developer tip

자바 퍼시스턴스 / JPA : @Column vs @Basic

optionbox 2020. 7. 25. 10:49
반응형

자바 퍼시스턴스 / JPA : @Column vs @Basic


JPA @Column@Basic주석 의 차이점은 무엇입니까 ? 함께 사용할 수 있습니까? 함께 사용해야합니까 ? 아니면 그들 중 하나만으로 충분합니까?


  • @Basic속성이 유지되고 표준 매핑이 사용됨을 나타냅니다. 속성이 느리게로드되는지 여부와 널 입력 가능 여부를 지정할 수있는 매개 변수가 있습니다.

  • @Column 속성을 유지하려는 데이터베이스의 열 이름을 지정할 수 있습니다.

다른 것없이 하나를 지정하면 합리적인 기본 행동을 얻을 수 있으므로 일반적으로 사람들은 특별한 경우를 제외하고 하나만 사용합니다.

따라서 속성의 지연 로딩을 원하고 열 이름을 지정하려면

 @Basic(fetch=FetchType.LAZY)
 @Column(name="WIBBLE")

우리가 기본, 비 게으른 동작을 @Column필요로한다면 이것으로 충분했을 것입니다.


이외에도 @ djna의 대답은 , 그를 주목할 필요가있다 @Basic과 비교되어야 @OneToMany, @ManyToOne하고 @ManyToMany. 이 중 하나만 속성에 지정할 수 있습니다.

@Column@JoinColumn데이터베이스 열 특성을 설명하기 위해 이들의 함께 지정 될 수 있습니다.

이들은 함께 사용할 수있는 두 개의 주석 세트이지만 한 번에 하나의 주석 세트 만 사용할 수 있습니다.


Basic은 프리미티브 필드를 위해 설계되었습니다.

http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes

기본 속성은 속성 클래스가 String, Number, Date 또는 primitive와 같은 단순 유형 인 속성입니다. 기본 속성 값은 데이터베이스의 열 값에 직접 맵핑 될 수 있습니다.

지원되는 유형 및 변환은 JPA 구현 및 데이터베이스 플랫폼에 따라 다릅니다. 데이터베이스 유형에 직접 맵핑되지 않는 유형을 사용하는 모든 기본 속성은 2 진 데이터베이스 유형으로 직렬화 될 수 있습니다.

JPA에서 기본 속성을 맵핑하는 가장 쉬운 방법은 아무것도하지 않는 것입니다. 다른 주석이없고 다른 엔티티를 참조하지 않는 모든 속성은 자동으로 기본으로 매핑되며 기본 유형이 아닌 경우에도 직렬화됩니다. 속성의 열 이름은 기본적으로 속성 이름과 동일하게 대문자로 지정됩니다.

참고 : https://stackoverflow.com/questions/1383229/java-persistence-jpa-column-vs-basic

반응형