La tabla “seguromedico” que acabamos de crear se mapeará a las siguientes clases Java que serán las que tengan los datos que se obtienen/envian de/a la base de datos.
SeguroMedico int idSeguro String nif String nombre String ape1 int edad Sexo sexo boolean casado int numHijos boolean embarazada Coberturas coberturas Enfermedades enfermedades Enfermedades boolean corazon boolean estomacal boolean rinyones boolean alergia String nombreAlergia Coberturas boolean oftalmologia boolean dental boolean fecundacionInVitro «Enum» Sexo H M
Como vemos las clases son iguales al sistema de clases que teníamos en el modelo de JavaScript , por lo que transformando la clase SeguroMedico a JSON obtendremos exactamente el JSON que necesitamos para nuestra aplicación de AngularJS
¿Recuerdas que al tratar con la librería de JSON llamada Jackson encapsulamos su funcionamiento bajo un interfaz?. Para el acceso a la base de datos vamos a hacer lo mismo por ello vamos a crear el interfaz SeguroMedicoDAO.
El siguiente diagrama en UML muestra los métodos y relaciones del interfaz:
«interfaz» SeguroMedicoDAO void insert(SeguroMedico seguroMedico) throws BussinessException void update(int idSeguroMedico,SeguroMedico seguroMedico) throws BussinessException SeguroMedico get(int idSeguroMedico) throws BussinessException void delete(int idSeguroMedico) throws BussinessException List<SeguroMedico> findAll() throws BussinessException BussinessException List<BussinessMessage> bussinessMessages BussinessMessage String fieldName String message SeguroMedico Exception *
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 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 1) se lanzará una BussinessException que contendrá la lista de problemas que ha habido. Ya veremos como hacerlo en el siguiente tema.
La clase que implementa el interfaz SeguroMedicoDAO es SeguroMedicoDAOImplJDBC que realiza el acceso a la base de datos usando directamente el API de JDBC.
«interfaz» SeguroMedicoDAO SeguroMedicoImplJDBC
Ahora le tenemos que decir a Spring que existe esa clase para que pueda inyectarla cuando sea necesario, por ello en el fichero applicationContext.xml tendremos que añadir la siguiente línea:
<bean class="es.cursohibernate.basedatos.persistencia.impl.SeguroMedicoImplJDBC" />
Ya que la clase SeguroMedicoImplJDBC se encontrará en el paquete es.cursohibernate.basedatos.persistencia.impl.
Ahora en los controladores de Spring ya podremos hacer lo siguiente
@Autowired
SeguroMedicoDAO seguroMedicoDAO;
Y por lo tanto tener acceso al DAO sin estar acoplados a una implementación concreta del DAO en el código del controlador. Lo que nos permitiría en un futuro cambiar la implementación a Hibernate, a JPA, etc. sin tener que tocar nada de los controladores.
Ya hemos configurado la base de datos y creado todas las clases Java necesarias, pero nos falta una última cosa por hacer: Configurar el pool de conexiones.
Dicho de forma que se entienda rápido , el pool de conexiones lo podríamos ver simplemente como una cache de conexiones para tener acceso rápidamente a una conexión cada vez que llega una petición al servidor web. Es decir es una funcionalidad delservidor Web que nos ayuda a mejorar el rendimiento de la aplicación.
La forma de activar el pool de conexiones es añadiendo al fichero META_INF/context.xml dentro del tag Context el siguiente fragmento:
<Resource
type="javax.sql.DataSource"
auth="Container"
name="jdbc/seguromedico"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/seguromedico"
username="seguromedico"
password="seguromedico"
maxActive="100"
maxIdle="30"
maxWait="10000"
validationQuery="SELECT 1 FROM dual"
/>
Si quieres una información detalla sobre el pool de conexiones e información sobre como se configura y utiliza, la tienes en Pool de conexiones .