Tipo de retorno de un servicio web

Hola Compañeros:

La duda, en relacion a los servicios web, es el tipo de retorno que debe realizar un servicio SOAP, cuando la peticion no ha encontrado resultados, como por ejemplo, al momento de consultar una base de datos .

Por lo que he estado revisando, existen 3 posibles opciones:

  • Regresar null (por lo que he sabido, es mala práctica regresar null como tipos de resultado, no solamente a nivel web service)
  • Regresar un indicador, que especifique si se han encontrado valores (Otra mala práctica, si regresamos por ejemplo, un objeto Empleado y se le agrega una propiedad, como un valor boolean para saber si existen resultados, estamos rompiendo con la buena practica que dice que un objeto solo debe tener atributos que pertenezcan a la entidad)
  • Regresar una excepcion indicando que la consulta realizada, no presenta resultados (Algo asi como lo maneja hibernate, por ejemplo)

Gracias y Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

indicador

Una excepción debe ser solamente por algo excepcional (se cae la base de datos, ocurre un error inesperado, ese tipo de cosas que NO deberían pasar).

No encontrar resultados en una búsqueda es algo perfectamente normal y está contemplado, por lo tanto no es una excepción.

Un indicador es lo más... em, indicado. Pero en el caso de una consulta, pues el indicador es el resultado mismo; si la búsqueda arroja varios resultados, entonces una lista vacía es indicador de que no hubo resultados. Si la búsqueda arroja un solo resultado, entonces si no se encuentra pues no se devuelve (equivalente a devolver null).

Hibernate arroja una excepción cuando no se obtiene un resultado? De verdad? No creo...

Re: tipo de retorno de un servicio web

Faltó:

  • Una lista vacía.
Imagen de alucard1

Gracias ezamudio

El objeto org.hibernate.Session, regresa una excepcion en el metodo load, cuando no se encuentran resultados, el metodo get, regresa un null, la duda en relacion a tipo de retorno de un web service es que regresar null es mala practica, lo que estaba pensando era regresar un indicador, pero en un objeto de una clase de respuesta, algo asi como lo siguiente:

......
......
public class Response{

      boolean isResponseFound;

      public Empleado  obtenerRespuesta(){.....}
     
      //metodos get y set
}

Con esta solucion, no rompemos con alguna mala practica, pues el objeto Response tiene consitencia con las propiedades que la forman y nuestra clase Empleado no tendria propiedades incoherentes, esta es mi teoria y un punto de vista.

Gracias nuevamente

Imagen de arterzatij

vagamente recuerdo que me

vagamente recuerdo que me tope con un NPE en hibernate al no encontrar una entidad que ha sido solicitada y tenia que manejar la NPE en el DAO y retornar un null en caso de cachar el NPE

Imagen de ezamudio

Contenedor

Si quieres hacer lo de devolver un indicador entonces necesitas devolver un objeto contenedor que traiga el resultado (opcional), y el indicador (también opcional). Y pues devuelves siempre ese contenedor con resultado O con indicador.

En cuanto a Hibernate, get y load son cosas distintas. http://www.journaldev.com/3472/hibernate-session-get-vs-load-difference-...

Imagen de alucard1

Gracias

Gracias por sus comentarios, ezamudio tienes toda la razon !!! Saludos