Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

unidades:10_servidor:05_basededatos [2014/09/01 13:03]
admin
unidades:10_servidor:05_basededatos [2014/09/02 23:31] (actual)
admin [Interfaz DAO]
Línea 126: Línea 126:
  
  
-Lo interesante de la clase ''​SeguroMedicoDAO''​ es que todos los métodos lanzan una excepción llamada ''​BussinessException''​. Esta excepción tiene una propiedad que es una lista de objetos ''​BussinessMessage''​. Esta última clase la vimos en el [[http://​www.cursoangularjs.es/​doku.php?​id=unidades:​10_servidor:​01_rest#​tratamiendo_de_errores|trtamiento ​de errores]] de los servicios REST. +Lo interesante de la clase ''​SeguroMedicoDAO''​ es que todos los métodos lanzan una excepción llamada ''​BussinessException''​. Esta excepción tiene una propiedad que es una lista de objetos ''​BussinessMessage''​. Esta última clase la vimos en el [[http://​www.cursoangularjs.es/​doku.php?​id=unidades:​10_servidor:​01_rest#​tratamiendo_de_errores|tratamiento ​de errores]] de los servicios REST. 
  
 Es decir que cuando cualquiera de los métodos quiera comunicarnos que ha habido algún problema para procesar la petición ((que no un error de programación)) se lanzará una ''​BussinessException''​ que contendrá la lista de //​problemas//​ que ha habido. Ya veremos como hacerlo en el siguiente tema. Es decir que cuando cualquiera de los métodos quiera comunicarnos que ha habido algún problema para procesar la petición ((que no un error de programación)) se lanzará una ''​BussinessException''​ que contendrá la lista de //​problemas//​ que ha habido. Ya veremos como hacerlo en el siguiente tema.
Línea 137: Línea 137:
 } }
  
-SeguroMedicoDAO <​|.. ​SeguroMedicoImplJDBC+SeguroMedicoDAO <​|.. ​SeguroMedicoDAOImplJDBC
 </​uml>​ </​uml>​
  
Línea 143: Línea 143:
  
 <sxh xml> <sxh xml>
-    <bean class="​es.cursohibernate.basedatos.persistencia.impl.SeguroMedicoImplJDBC" />+    <bean class="​es.cursohibernate.basedatos.persistencia.impl.SeguroMedicoDAOImplJDBC" />
 </​sxh>​ </​sxh>​
  
-Ya que la clase ''​SeguroMedicoImplJDBC''​ se encontrará en el paquete ''​es.cursohibernate.basedatos.persistencia.impl''​.+Ya que la clase ''​SeguroMedicoDAOImplJDBC''​ se encontrará en el paquete ''​es.cursohibernate.basedatos.persistencia.impl''​.
  
 Ahora en los controladores de Spring ya podremos hacer lo siguiente Ahora en los controladores de Spring ya podremos hacer lo siguiente
Línea 184: Línea 184:
  
 ===== Ejemplo ===== ===== Ejemplo =====
 +El ejemplo de esta unidad es exactamente lo que acabamos de contar pero en un nuevo proyecto llamado "​basedatos"​.
  
 +Para aclarar mas el ejemplo vamos a hacer un pequeño resumen de los cambios en el proyecto respecto al ejemplo del tema anterior:
 +  * Se han añadido las siguientes clases referidas al modelo de datos:
 +    * SeguroMedico
 +    * Coberturas
 +    * Enfermedades
 +    * Sexo
 +  * Se han añadido las siguientes clases para el acceso a datos mediante el DAO
 +    * SeguroMedicoDAO
 +    * SeguroMedicoDAOImplJDBC
 +    * BussinessException
 +    * BussinessMessage
 +  * Se ha modificado el fichero ''​applicationContext.xml''​ para poder inyectar la clase ''​SeguroMedicoDAOImplJDBC''​
 +  * Se ha modificado el fichero ''​context.xml''​ para configurara el pool de conexiones.
 +  * Se ha instalado la base de datos junto con la tabla ''​seguromedico''​
 +  * Se han reorganizado los paquetes Java para que se organicen según la siguiente estructura:
 +    * Paquete ''​modelo'':​ Las clases con el modelo de datos. Ej. ''​SeguroMedico''​
 +    * Paquete ''​persistencia'':​ Las clase que permiten acceder a la base de datos. Ej. ''​SeguroMedicoDAO''​.
 +    * Paquete ''​presentacion'':​ Todo lo referido a Web y REST , como el controlador,​ la clases de JSON ,etc.
 +
 +Se muestra ahora la imagen con la estructura del proyecto:
 +
 +{{:​unidades:​10_servidor:​estructura_proyecto.png?​nolink|}}
 +
 +<note tip>
 +Los paquetes Java empiezan por ''​es.cursohibernate.basedatos''​ ya que este proyecto es para configurar todo lo relativo a la base de datos. No confundirlo con los paquetes para acceso a datos que aqui se llaman ''​persistencia''​
 +</​note>​
 +
 +Por último hemos modificado el controlador para usar ahora como ejemplo la clase del modelo ''​SeguroMedico''​ en vez de la clase ''​Usuario'',​ haciendo los siguientes cambios:
 +  * El controlador ahora se llama ''​SeguroMedicoController''​ y ahora se accede a él mediante la URL [[http://​localhost:​8084/​basedatos/​api/​SeguroMedico]].
 +  * Hemos usado el DAO para obtener los datos realmente de la base de datos en vez de ponerlos directamente en el código como se hacía en el tema anterior.
 +
 +El código Java de ''​SeguroMedicoController''​ es el siguiente:
 +<sxh java;​title:​SeguroMedicoController.java;​highlight:​ [7,​8,​12]>​
 +@Controller
 +public class SeguroMedicoController {
 +    ​
 +    @Autowired
 +    private JsonTransformer jsonTransformer;​
 +    ​
 +    @Autowired
 +    SeguroMedicoDAO seguroMedicoDAO;​
 +    ​
 +    @RequestMapping(value = {"/​SeguroMedico"​})
 +    public void prueba(HttpServletRequest httpRequest,​ HttpServletResponse httpServletResponse) throws Exception {
 +        SeguroMedico seguroMedico=seguroMedicoDAO.get(1);​
 +        String jsonSeguroMedico=jsonTransformer.toJson(seguroMedico);​
 +        ​
 +        httpServletResponse.getWriter().println(jsonSeguroMedico);​
 +    }
 +}
 +</​sxh>​
 +  * Línea 7: Esta línea le dice a Spring que debe buscar una implementación del interfaz que hay a continuación y asignarle una instancia a la propiedad.
 +  * Línea 8: Declaramos ahora la propiedad privada seguroMedicoDAO pero no indicamos el objeto que lo implementa. Spring inyectará una instancia de la clase ''​es.cursohibernate.basedatos.persistencia.impl.SeguroMedicoDAOImplJDBC''​ tal y como lo hemos definido en el fichero ''​applicationContext.xml''​
 +  * Línea 12: Hacemos uso del DAO para obtener los datos del seguro médico identificado por el ''​IdSeguroMedico=1''​.
 +
 +Si ahora navegamos a la URL [[http://​localhost:​8084/​basedatos/​api/​SeguroMedico]] se mostrará lo siguiente:
 +  {"​idSeguro":​1,"​nif":"​12345678Z","​nombre":"​Patata","​ape1":"​Cano","​edad":​41,"​sexo":"​H","​casado":​true,"​numHijos":​3,"​embarazada":​false,"​coberturas":"​oftalmologia":​true,"​dental":​false,"​fecundacionInVitro":​false},"​enfermedades":​{"​corazon":​true,"​estomacal":​false,"​rinyones":​false,"​alergia":​true,"​nombreAlergia":"​Acaros"​}}
 +
 +<​note>​
 +Este ejemplo se encuentra en  git en [[https://​github.com/​logongas/​cursoangularjs/​tree/​master/​basedatos]]
 +</​note>​
 ===== Referencias ===== ===== Referencias =====
 +  * [[http://​cursohibernate.es/​doku.php|Curso de Hibernate con Spring]]
 +  * [[http://​cursohibernate.es/​doku.php?​id=unidades:​01_introduccion_orm:​03_mysql|Instalar MySQL]]
 +  * [[http://​cursohibernate.es/​doku.php?​id=unidades:​01_introduccion_orm:​05_driver_mysql|Driver JDBC de MySQL]]
 +  * [[http://​cursohibernate.es/​doku.php?​id=patrones:​pool_conexiones|Pool de conexiones]]
 +  * [[http://​cursohibernate.es/​doku.php?​id=unidades:​07_arquitectura:​00_start|Arquitectura]]
 +  * [[http://​cursohibernate.es/​doku.php?​id=unidades:​07_arquitectura:​03_dao|DAO]]
unidades/10_servidor/05_basededatos.1409569422.txt.gz · Última modificación: 2014/09/01 13:03 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0