source

JPA의 @Basic(옵션 = false) vs @Column(nullable = false)

factcode 2022. 9. 20. 23:51
반응형

JPA의 @Basic(옵션 = false) vs @Column(nullable = false)

와의 차이는 무엇입니까?@Basic(optional = false)그리고.@Column(nullable = false)JPA의 지속성에 대해서요?

Gordon Yorke(EclipseLink 아키텍처 위원회 위원, TopLink Core Technical Lead, JPA 2.0 Expert Group Member)는 이 주제에 대해 좋은 답변을 작성했습니다.그 대신 그의 답변을 인용하겠습니다.

의 차이점optional그리고.nullable평가 범위입니다.의 정의optional에서는 속성과 필드 값에 대해 설명하며 런타임 내에 이 기능을 평가해야 한다고 제안합니다.'nullable'는 데이터베이스 열만 참조합니다.

구현에서 구현이 선택되는 경우optional이러한 속성은 지속성 공급자에 의해 메모리에서 평가되며 SQL이 데이터베이스로 전송되기 전에 예외가 발생합니다.그렇지 않으면 를 사용할 때 예외가 발생합니다.updatable=false' 'optional위반은 보고되지 않습니다.

그래서 JPA 2.1(EclipseLink)을 사용하여 @Basic(옵션=false) 주석을 시도해보니 실제 사용에서는 해당 주석이 무시되었습니다(적어도 String 필드에서는).(예를 들어 entity Manager).지속 콜)을 실행합니다.

그래서 저는 사양서에 가서 그것에 대해 자세히 읽었습니다.사양은 다음과 같이 기술하고 있습니다.
http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/

기본(옵션):필드 또는 속성 값이 null일 수 있습니다.이는 힌트이며 기본 유형에 대해서는 무시되며 스키마 생성에 사용될 수 있습니다.

그래서 이 문장은 스키마 생성에서 사용되는 Basic(옵션)의 실제 사용 사례를 설명한다고 생각합니다.(즉, Java Entity 클래스에서 CREATE TABLE SQL을 생성하는 경우).예를 들어, 이것은 Hibernate가 실행할 수 있는 것입니다.)

언급URL : https://stackoverflow.com/questions/2899073/basicoptional-false-vs-columnnullable-false-in-jpa

반응형