Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Acceso A Datos (T5)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 50

Programación de

componentes de accesos
a datos
Tema 5. Acceso a datos
Objetivos • Programación orientada a
componentes
• Plataformas y modelos
• Spring Boot
¿Qué es un componente?

Un componente es un objeto escrito de acuerdo a unas


especificaciones. No importa qué especificación sea ésta, siempre
y cuando el objeto se adhiera a la especificación.
Solo cumpliendo correctamente con esa especificación es que el
objeto se convierte en componente y adquiere características
como reusabilidad.
Programación Orientada a Componentes

La programación orientada a componentes es una rama de la


ingeniería del software, con énfasis en la descomposición de
sistemas ya conformados en componentes
Los componentes disponene de interfaces bien definidas usadas
para la comunicación entre ellos.
POO vs POC

• Las reutilizaciones de objetos son complicadas.


• No incorpora aspectos tales como distribución y
empaquetado decomponentes.
• Imposibilidad de separar aspectos composicionales y
computacionales.
• No define una unidad de composición de aplicaciones
software.
Ventajas de la POC

• Reutilización de componentes.
• Al desarrollar cada componente se prueba por separado.
• Posibilidad de actualizar y/o agregar componentes a una aplicación
en función de la necesidad.
• Un componente puede, una vez
construido, mejorarse continuamente.
• El retorno sobre la inversión mejorará notablemente.
Desventajas POC

• En principio el desarrollador de componentes no sabe para


quién está dirigido el componente ni como lo utilizará.
• Además, cuando finalmente el usuario del componente lo
utilice, seguramente no pueda adaptarlo a sus necesidades, ya
que no tiene acceso a su implementación.
• A esto, hay que añadir que aún no existe una solución estándar
al problema de la convivencia entre versiones de un
mismo componente.
Propiedades

Una propiedad de un componente es un atributo


que afecta a su comportamiento o apariencia.
• Simples
• Indexadas
• Ligadas
• Restringidas
Propiedades ligadas

Son aquellas que al cambiar se informa a otros


componentes permitiéndoles realizar alguna acción.
En este caso, la notificación del cambio se realiza
mediante un PropertyChangeEvent.
Los componentes que quieran ser notificados del
cambio en una propiedad deberán registrarse como
auditores.
Características

Entre las principales características de


la arquitectura basada en componentes destacan:
• Eventos.
• Persistencia.
• Introspección y reflexión.
Eventos

Un evento es un mecanismo utilizado por


los componentes para comunicarse entre sí.
Son mensajes que se envían entre
componentes notificando que algo ha ocurrido.
Eventos

• Un evento es un mecanismo utilizado por


los componentes para comunicarse entre sí. Son
mensajes que se envían entre
componentes notificando que algo ha ocurrido.
• El componente fuente del evento invoca a un
método del oyente pasándole como argumento
un objeto que almacena toda la información sobre
el evento.
Eventos
Eventos

• Un evento es un mecanismo utilizado por


los componentes para comunicarse entre sí. Son
mensajes que se envían entre
componentes notificando que algo ha ocurrido.
• El componente fuente del evento invoca a un
método del oyente pasándole como argumento
un objeto que almacena toda la información sobre
el evento.
Persistencia

• Mecanismo que permite guardar y restaurar el


estado de los componentes junto con los valores
personalizados. Para que un componente
sea persistente, es necesario que implemente la
interfaz Serializable.
Introspección y Reflexión

Para conocer las propiedades, métodos y eventos


de un componente, la herramienta de desarrollo
tiene dos opciones:
• Introspección
• Reflexión
Introspección y Reflexión

Para conocer las propiedades, métodos y eventos


de un componente, la herramienta de desarrollo
tiene dos opciones:
• Introspección
• Reflexión
Introspección

Define un interfaz standard para poder acceder a


las propiedades disponibles de un objeto.
• public List<String> getProperties() {...}
• public Object getProperty(String property) {...}
• public void setProperty(String property, Object value)
{…}
Reflexión

El API de Java reflection nos permite leer los metadatos


de nuestras clases y trabajar con ellos.

Method[] metodos=c.getClass().getMethods();
...
if (m.getName().equals("getId"){
String cadena=(String) m.invoke(c, null);
System.out.println(cadena);
}
Reflexión

El API de Java reflection nos permite leer los metadatos


de nuestras clases y trabajar con ellos.

Method[] metodos=c.getClass().getMethods();
...
if (m.getName().equals("getId"){
String cadena=(String) m.invoke(c, null);
System.out.println(cadena);
}
Modelos de componentes

• Los modelos de componentes son los estándares


encargados de definir la forma de las interfaces
de los componentes y determinar los mecanismos
de composición y comunicación entre ellos.
• Ejemplos de modelos son: COM/DCOM,
JavaBeans y CORBA.
CORBA

• Estándar abierto creado por el OMG (Object


Management Group) que se encarga de definir
estándares para facilitar la interoperabilidad y
portabilidad.
• Este estándar es el encargado de permitir que
componentes software escritos en distintos lenguajes
de programación y que ejecutan en distintas maquinas
puedan trabajar juntos.
COM

• Modelo de componentes creado por Microsoft


que permite, al igual que CORBA, la
interoperabilidad entre componentes
independientemente de los lenguajes de
programación en los que se hayan escrito y de las
plataformas sobre las que corran.
JAVABEANS

• Modelo de componentes creado por la compañía


Sun Microsystems para la construcción de aplicaciones
con el lenguaje de programación Java.
• Hoy en día es uno de los modelos de desarrollo de
software basado en componentes con
más aceptación.
• Permite la comunicación entre componentes a través
de eventos.
Objetos JavaBean

Un JavaBean es un objeto Java que presenta ciertas


características:
• Posee un constructor sin argumentos.
• Las propiedades son accesibles con los métodos get y set
estudiados anteriormente.
• Es serializable, es decir, implementa la interfaz Serializable.
El principal objetivo de los JavaBeans es ser contenedores de
código que puedan ser empaquetados e incorporados a
aplicaciones que necesiten de esa funcionalidad.
Clase BeanInfo

• Clase que contiene la información sobre


las propiedades, eventos y métodos del componente.
Public class PersonaBeanInfo extends BeanInfo.
• Esta interfaz proporciona los métodos necesarios
para obtener información sobre las propiedades,
eventos y métodos.
• Sobreescribir los métodos necesarios.
Spring

Spring es un framework Open Source que


facilita la creación de aplicaciones de todo tipo
en Java.
Spring

Spring Framework está dividido en diversos módulos que podemos


utilizar:
• Core container: proporciona la funcionalidad básica.
• Web: nos permite crear controladores Web, tanto de vistas MVC como
aplicaciones REST.
• Acceso a datos: abstracciones sobre JDBC, ORMs como Hibernate, etc...
• Instrumentación: proporciona soporte para la instrumentación y reutilización
de clases.
• Pruebas de código: contiene un framework de testing con soporte para JUnit.
Spring
Spring Boot

Spring Framework es muy potente pero la configuración inicial y la


preparación de las aplicaciones para producción son tareas bastante
tediosas.
Spring Boot simplifica el proceso al máximo gracias a sus dos
principales mecanismos:
• Contenedor de aplicaciones integrado
• Starters
Spring Boot

Contenedor de aplicaciones integrado


• Permite compilar nuestras aplicaciones Web como un
archivo .jar que podemos ejecutar como una aplicación
Java normal (como alternativa a un archivo .war, que
desplegaríamos en un servidor de aplicaciones como
Tomcat).
Spring Boot

Starters
• Spring Boot nos proporciona una serie de dependencias,
llamadas starters, que podemos añadir a nuestro proyecto
dependiendo de lo que necesitemos.
• Una vez añadimos un starter, éste nos proporciona todas las
dependencias que necesitamos, tanto de Spring como de
terceros.
• Además, los starters vienen configurados con valores por
defecto, que pretenden minimizar la necesidad de
configuración
Spring Boot
Spring Boot
Spring Boot
Spring Boot
Spring Boot
Persistencia de datos JPA y repositorios
Persistencia de datos JPA y repositorios

La información de la base de datos se introduce en el archivo


aplication.propierties dentro de src/main/resources
Persistencia de datos JPA y repositorios
Controladores web
Esquema de rutas en la url

A la hora de crear una aplicación web, la ruta de la url se usa para acceder
a los diferentes objetos a los que el usuario puede acceder.
Se suelen usar con los verbos de HTTP.

• [GET] /biblioteca
• [GET] /libro/{id}
• [POST] /libro/{id}
• [GET] /biblioteca/{categoria_id}
Uso de parámetros en la plantilla
Themeleaf

• Añadiendo atributos al modelo de la plantilla:


model.addAttribute("serverTime",
dateFormat.format(new Date()));

• Mostrando la información del modelo en la plantilla:


Current time is <span th:text="${serverTime}"/>
Themeleaf

• Añadiendo "atributos" (elementos) al modelo de la plantilla:


model.addAttribute("serverTime",
dateFormat.format(new Date()));

• Mostrando la información del modelo en la plantilla:


Current time is <span th:text="${serverTime}"/>
Themeleaf

• Añadiendo listas al modelo de la plantilla:


List<Student> students = new ArrayList<Student>();
model.addAttribute("students", students);

• Mostrando la información del modelo en la plantilla:


<tr th:each="student: ${students}">
<td th:text="${student.id}" />
<td th:text="${student.name}" />
</tr>
Themeleaf

• Condicionales en la plantilla
<span th:if="${person.gender} == 'M'" th:text="Male" />
<span th:unless="${person.gender} == 'M'" th:text="Female" />

• Añadiendo enlaces
<a th:href="@{'/person/'+${person.id}}">Edit info</a>
Añadiendo objetos al repositorio
Añadiendo objetos al repositorio
Crear una aplicación web basada en Spring
Queremos poder acceder al contenido de nuestra aplicación de
Gestión de eventos desde una aplicación web basada en Spring.

Debemos implementar una aplicación que muestre todos los


asistentes inscritos a algún evento en una tabla html, y si pulsamos
sobre alguno de ellos, aparezca una página con toda la información
disponible.

También podría gustarte