2010-03-01 4 views
12

안녕하세요,JPA 속성 java.net.URL

나는 URL 정보와 관련된 객체를 가지고 있습니다. 현재 나는 단순한 문자열 속성이 URL을 저장하지만,의 java.net.URL은 JPA 있다면, 그것은 매우 추한 고려할 것 같은 반면에 등 잘못된 형식의 URL을 감지

같은 추가 케이크 나에게 제공 할 것이다 단순히 URL-Object에 대한 LOB를 작성했습니다. 누구든지 형식 java.net.URL의 속성이 준수하는 JPA 공급자에 의해 데이터베이스에 유지되는 방법을 알고 있습니까? JPA를 사양으로 당

+0

나는 JPA 규격이 이것을 제공한다고 생각하지 않는다. 어떤 구현을 사용하고 있습니까? – skaffman

+2

예 : Hibernate는 이것에 대한 JPA 확장을 가지고있다 – skaffman

+0

예를 들어 DataNucleus는 이것 (그리고 많은 다른 표준 타입들)을위한 JPA (그리고 JDO) – DataNucleus

답변

11

:

영구 파이 필드들 또는 의 특성 아마 다음과 같은 유형의 엔티티 : 자바 기본 유형; java.lang.String; 프리미티브 타입 랩퍼 java.math.BigInteger에, 의 java.math.BigDecimal, java.util.Date, java.util.Calendar의 [7] java.sql.Date 포함 다른 자바 직렬화 유형 ( java.sql.Time, java.sql.Timestamp, 사용자 정의 직렬화 가능 유형, byte [], Byte [], char [], andCharacter []); enums; 엔티티 유형 및/또는 엔티티 유형 모음 포함 가능한 클래스 ( 2.1.5 참조).

플러스 컬렉션 지원. 그러나 URL의 기본 지원이 없습니다. 그러나 그들은 Serializable으로 지원 될 것입니다. 귀하가 언급 한대로 LOB가 될 것이라고 추측합니다.

그러나 당신은 쉽게 그것을 회피 할 수 있어야한다 : 당신이 생각 String에서 URL로 변환 필드와 게터/세터의 String로 URL을 가질 수 있습니다. 그런 다음 필드를 주석과 매핑합니다.

또는 필드의 java.lang.URL 및 getter/setter를 URL에서 String으로 변환 한 다음 getter/setter를 주석과 매핑합니다. 나는 그것이 잘 작동한다고 생각한다.

1

당신은 또한 당신이 단지 검증에 interrested 경우,

을 (Hibernate가 상자 밖으로 그 않는)를 String 컬럼에 URL 객체를 매핑하거나 here 설명으로 JPA AttributeConverter을 사용할 수 있습니다, 당신은 BeanValidation을 사용할 수 있습니다 . java.net.URL 일부 복잡성을 가져다로 URL을 고려하기 때문에 here

을 설명하는 등 당신은 또한 당신의 자신의 제약 조건을 만들 수 있습니다 HibernateValidator 확장에 @URL 주석이 있습니다 나는 PERSONNALY BeanValidation 솔루션을 선호 : 필요 JPA AttributeConverter, JSF Converter, JAXB Adapter을 위해 .. . 그냥 유효성 검사를위한 동안