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]] | ||