@Column JPA 어노테이션에 설정된 경우 길이 속성은 무엇을합니까?
JPA에서 열의 길이를 정확히 설정하는 것은 무엇입니까?
@Column(name = "middle_name", nullable = false, length = 32)
public String getMiddleName() {
return this.middleName;
}
주석을 사용하여 엔터티 개체를 기반으로 데이터베이스 스키마 (DDL)를 생성 할 수 있다는 것을 알고 있지만 길이는 지속성이 발생할 때 어떤 종류의 검사 나 절단을 수행합니까, 아니면 스키마 생성에만 사용됩니까?
또한 JPA가 다양한 구현 위에있을 수 있다는 것을 알고 있습니다.이 경우 제가 염려하는 구현은 Hibernate입니다.
길이는 지속성이 발생할 때 어떤 종류의 검사 또는 절단을 수행합니까, 아니면 스키마 생성에만 사용됩니까?
주석 의 length
속성은 다음 Column
을 지정하는 데 사용됩니다.
컬럼 길이. (문자열 값 열이 사용되는 경우에만 적용됩니다.)
그리고 생성 된 DDL에서만 사용됩니다. 귀하의 예에서 결과 열은로 생성되고 VARCHAR(32)
더 긴 문자열을 삽입하려고하면 SQL 오류가 발생합니다.
유효성 검사 를 위해 Bean 유효성 검사 API ( JSR 303 ) 에서 @Size(max=32)
제약 조건 을 추가 할 수 있습니다 . 여기에 실행 가능한 테스트와 함께 샘플을 제공했습니다 .
모두를 제공 Size
하고 length
중복 보일 수 있지만에 따라 부록 D. 콩 검증 인식 DDL을 생성하는 콩 검증 스펙은 지속성 공급자를위한 필수가 아닙니다. 따라서 유효성 검사 length
를 위해 DDL에 사용 하십시오 @Size
.
관심이있는 경우 JPA 2.0을 사용하여 클래스 경로에 Bean Validation 구현을 배치하십시오. JPA 1.0에서는이 이전 답변을 참조하십시오 .
@column (length = 32)는 DDL 용도로만 사용되며 제한이 아니라는 것은 테이블 수준에서 제한되지 않는 한 32 자 이상을 허용한다는 의미입니다. 크기를 제한하려면 @size (max = 32)로 이동합니다.
Hibernate 4.3.11 (및 기타 버전)은 Validation Annotations에주의를 기울여야합니다. -업그레이드해야 할 수도 있습니다.
이것은 Hibernate 4.3.11 매뉴얼 에서 인용 한 것입니다.
Hibernate Core는 또한 일부 외부 모듈 / 프로젝트와의 통합을 제공합니다. 여기에는 Bean Validation (JSR 303) 및 Hibernate Search의 참조 구현 인 Hibernate Validator가 포함됩니다.
... Hibernate와 Bean Validation 간의 통합은 두 가지 수준에서 작동합니다. 첫째, 제약 조건 위반에 대해 클래스의 메모리 내 인스턴스를 확인할 수 있습니다. 둘째, Hibernate 메타 모델에 제약을 적용하고 생성 된 데이터베이스 스키마에 통합 할 수 있습니다. ...
Hibernate는 정확한 데이터베이스 스키마를 생성하기 위해 Bean Validation 제약을 사용합니다 :
@NotNull leads to a not null column (unless it conflicts with components or table inheritance) @Size.max leads to a varchar(max) definition for Strings @Min, @Max lead to column checks (like value <= max) @Digits leads to the definition of precision and scale (ever wondered which is which? It's easy now with @Digits :) )
참고 : @Lengh도 @Size처럼 작동합니다.
Hibernate Validator 5.1을 사용할 때-el-Implementation도 필요합니다. 예를 들면
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
당신이없는 경우, 최대 절전 모드 ORM은 최대 절전 모드 검증을 시작할 수 없었던 것이다 광고 따라서는받지 않을 것 (모든) JSR-303 예를 들어 @Length
, @Size
계정에서!
'programing' 카테고리의 다른 글
각도 6 의존성 주입 (0) | 2020.12.25 |
---|---|
컴파일 오류 : 인터페이스를 명시 적으로 구현하는 동안 "수정 자 'public'이이 항목에 유효하지 않습니다." (0) | 2020.12.25 |
Android의 9 패치 이미지 오류 (0) | 2020.12.25 |
Django Unique Together (외래 키 포함) (0) | 2020.12.25 |
Timsort와 Quicksort의 비교 (0) | 2020.12.25 |