2010-03-01 7 views
12

HI,APP propiedad java.net.URL

Tengo un objeto que tiene un pedazo de URL-información asociada a ella. Actualmente guardo esta URL en una simple propiedad de cuerdas, pero habría java.net.URL proporcionarme extras adicionales, tales como la detección de URL con formato incorrecto etc.

Por otro lado me parecería muy feo, si JPA simplemente creó un LOB para el objeto URL. ¿Alguien sabe cómo persistirá una propiedad del tipo java.net.URL a la base de datos por proveedores JPA compatibles?

+0

No creo que las especificaciones de JPA lo permitan. ¿Qué implementación estás usando? – skaffman

+2

p. Ej. Hibernate tiene extensiones JPA para este – skaffman

+0

, por ejemplo, DataNucleus tiene extensiones JPA (y JDO) para esto (y muchos otros tipos estándar) – DataNucleus

Respuesta

11

De acuerdo con la especificación JPA:

Los campos persistentes o propiedades de una entidad tal vez de los siguientes tipos: tipos primitivos de Java; java.lang.String; otros tipos serializables Java (incluyendo envoltorios de los primitivos tipos, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar [7], java.sql.Date, java.sql.Time, java.sql.Timestamp, tipos serializables definidos por el usuario, byte [], Byte [], char [], yCharacter []); enumeraciones; tipos de entidad y/o colecciones de tipos de entidades; y clases incrustables (ver la sección 2.1.5).

Más la compatibilidad para las colecciones. Pero no hay soporte primitivo de URL. Sin embargo, serían compatibles como Serializable, lo que supondría que daría como resultado un LOB como usted mencionó.

embargo, usted debe ser capaz de eludir fácilmente que: se puede tener la URL como String en un campo y un captador/definidor que convertir de String a URL sin embargo. Luego mapea el campo con la anotación.

O lo contrario: el java.lang.URL en un campo, y el captador/definidor convertir de URL a String, a continuación, asignar el captador/definidor con la anotación. Creo que funciona también.

1

También puede utilizar JPA AttributeConverter como explicar here para mapear un objeto URL en una columna String (Hibernate hace que fuera de la caja)

O, si sólo se interrested en la validación, es posible utilizar Bean Validation . Hay una anotación @URL en extensión HibernateValidator también puede crear su propia limitación, como explicar here

Yo prefiero la solución personnaly Bean Validation porque considerando URL como java.net.URL traer un poco de complejidad: necesidad de APP AttributeConverter, JSF Converter, JAXB Adapter .. .aunque es solo para validación