Foros del Web » Programación para mayores de 30 ;) » Java »

Usar clases JAX-B como DTO

Estas en el tema de Usar clases JAX-B como DTO en el foro de Java en Foros del Web. Estoy pensando en crear todas las clases DTO a partir de schemas .xsd, las ventajas que le veo son 1. No necesitar modificar los métodos ...
  #1 (permalink)  
Antiguo 26/10/2012, 04:06
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Usar clases JAX-B como DTO

Estoy pensando en crear todas las clases DTO a partir de schemas .xsd, las ventajas que le veo son

1. No necesitar modificar los métodos toString de cada objeto para usar en los log, podría convertir el objeto a xml para verlo claramente en el log.

2. Crear los objetos para pruebas a partir de un xml, me parece más cómodo que hacerlo mediante código.

3. El propio esquema sirve como documentación, no se necesitaría generar un nuevo javadoc ante cualquier cambio.

¿Qué os parece?¿Qué desventajas tiene?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #2 (permalink)  
Antiguo 26/10/2012, 10:30
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Usar clases JAX-B como DTO

Hola:

Yo lo he hecho en alguna ocasión, estaba usando web services y necesitaba almacenar en base de datos lo que me llegaba, usando hibernate. Es muy cómodo hacerlo así.

Las posibles pegas son
- Pierdes la posibilidad de hacer la clase a tu medida, por ejemplo, verificar datos en los métodos set o añadir algún método adicional a esa clase, o poner un LinkedList donde xsd se empeñe en poner ArrayList, añadir anotacionjes, etc.
- Los XSD no generan métodos set de algunos atributos (las listas en concreto), por lo que para añadir elementos a una lista tienes que hacer unDto.getLista().add(element). Si usas estas clases con hibernate, tienes que decirle a hibernate que no use los setters, sino que use directamente el atributo.
- No sé, a mi me resulta más difícil hacer un xsd que un java. En mi caso lo use porque me daban los wsdl/xsd ya hechos :)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 04/11/2012, 06:19
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Usar clases JAX-B como DTO

Mi caso es parecido, hay un servicio al que tengo que llamar para pasarle datos de la BBDD.

No quiero usar los objetos del servicio como DTO porque difieren de la estructura de las tablas (y por desacoplar), de esta forma puedo usar los DTO para la típicas operaciones CRUD de forma bastante directa (en futuras fases del proyecto).

La idea es aprovechar los xsd del servicio, para que con unos mínimos cambios sirvan para generar los DTO. No hay apenas lógica, se trata de una migración de datos, por lo que en un principio no necesitaría añadir casi métodos a los DTO, y si son poca cosa, como para el acceso a BBDD uso MyBatis, mediante Handlers podría controlar parte de los problemas que comentas.

Si veo que la cosa se complica, partiré de los java, mi duda era más sobre usar JAX-B como DTO que sobre cómo generar los JAX-B.

Gracias
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, clases, string, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:22.