Muestra las diferencias entre dos versiones de la página.
unidades:10_servidor:05_basededatos [2014/09/01 13:20] admin [Interfaz DAO] |
unidades:10_servidor:05_basededatos [2014/09/02 23:31] (actual) admin [Interfaz DAO] |
||
---|---|---|---|
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 es un nuevo proyecto llamado "basedatos" | + | 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> | <note> | ||
Este ejemplo se encuentra en git en [[https://github.com/logongas/cursoangularjs/tree/master/basedatos]] | Este ejemplo se encuentra en git en [[https://github.com/logongas/cursoangularjs/tree/master/basedatos]] | ||
</note> | </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]] |