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

ACCESO A DATOS

UF1: Persistencia en ficheros.

1. Ficheros
Fichero (File en inglés) es tradicionalmente un lugar donde se almacenan fichas,
carpetas y en general documentos.

Puede: Leer, escribir, creación, borrado, copia y movimiento


Tipos de ficheros:
 Fichero estándar: valido para todo tipo de datos (caracteres, imágenes,
video, etc)
 Directorio o carpeta: fichero que almacena más ficheros en su interior
(jerarquía)
 Ficheros especiales: del SO y para controlar dispositivos o periféricos
¿Qué son los registros?
Se puede llamar registro a cada bloque de longitud fija por el que está formado un
fichero (Caracteres o Binarios).

2. Clase File. W \ y Linux /


Permite obtener información acerca de los archivos, como es el caso de su
nombre, sus distintos atributos o los directorios.
4 Constructores:
 File (String ruta): crea una nueva instancia de file al convertir el nombre de
la ruta dada en un nombre de ruta abstracta.
 File (String padre, String hijo): crea una nueva instancia de file desde una
ruta padre a una ruta hija.
 File (File padre, String hijo): crea una nueva instancia a partir de una ruta
abstracta padre y una ruta abstracta hija.
 File (URI uri)-.-: crea una nueva instacia de File a la cual se le pasará una
URI (una secuencia de caracteres utilizada para la identificación de un
recurso en particular.

1
Métodos:
 canRead(): Devuelve true si se puede leer el fichero.
 canWrite(): Devuelve true si se puede escribir en el fichero.
 createFile(): devuelve un path con la ruta del fichero creado.
 createNewFile(): Crea el fichero asociado al objeto File.
 delete(): Elimina el fichero o directorio.
 exists(): Devuelve true si el fichero o directorio existe.
 getName(): Devuelve el nombre del fichero o directorio.
 getAbsolutePath(): Devuelve la ruta absoluta asociada al objeto File.
 getPath(): Devuelve la ruta con la que se creó el objeto File.
 isAbsolute(): Devuelve true si es una ruta absoluta.
 isDirectory(): Devuelve true si es un directorio válido.
 isFile(): Devuelve true si es un fichero válido.
 long length(): Devuelve el tamaño en bytes del fichero.
 getParent(): devuelve una cadena con el directorio padre.
Devuelve un File[] con los directorios hijos. Solo funciona con directorios listFiles

3. Formas de acceso a un fichero.


Acceso secuencial:
> Acceder a un dato o registro es necesario leer todo lo anterior(se lee de forma
ordenada) (VHS).
> Si el fichero es binario entonces teneemos FileInputSteam y FileOutputStream.
En cambio, si el fichero es de texto entonces tenemos FileReader y FileWriter.
> La clase realiza esta búsqueda en Java depende del tipo fichero vaya a utilizar.
Excepciones:
- FileReader -> FileNotFoundException
- FileWriter -> IOExcetion
*Método close() nos permite cerrar el flujo abierto desde nuestro programa a un
fichero binario aleatorio una vez finalizado el proceso, debemos cerrar el stream con
el método close().
Acceso aleatorio:
> Se puede acceder a un dato o registro que se encuentre en cualquier posición
deseada (CD) sin necesidad de hacer una lectura completa, sino que accedemos
directamente al registro buscado (acceder a un dato sin recorrer los datos anteriores).
> La clase utilizada para realizar esta búsqueda en Java es RandomAccessFile.
> r(lectura), rw(lectura y escritura); leer y escribir clases: DataInputStream y
DataOutputStream; RandomAccessFile usa puntero que indica posicón actual.

Los métodos mas destacados de la clase RandomAccessFile:


 void Seek(long position): Logra configurar el puntero del archivo en cualquier
posición aleatoria, comenzando desde la posición inicial.
 long getFilePointer(): Permite obtener la ubicación donde se encuentra en ese
momento.
 long length()

2
Operaciones que se pueden realizar sobre ficheros.
- Altas → Incluir un nuevo registro al archivo.
- Modificaciones → Cambiar una parte del registros
- Bajas → Dar de baja el registro
- Consultas → Busca un registro.

4. Trabajo con archivos XML.


Declaración <?xml version=”1.0” encoding=”ISO-8859-15”?>
XML (eXtensible Markup Languaje o Lenguaje de Etiquetado Extensible) es un
metalenguaje o, lo que es lo mismo, un lenguaje para definir lenguajes de marcado.
Para la lectura de documentos XML se utilizan procesadores de XML o
parser(analizador sintáctico XML; verifica estructura fichero correcta). Funciones:
 Proporcionar datos en una base de datos.
 Almacenar copias de esas bases de datos.
 Escribir archivos de configuración de programas.
 Efectuar comandos en servidores remotos en el protocolo SOAP.
DOM: Árbol y global. Lectura recorriendo nodos. Consume más memoria que SAX.
Algunas de sus interfaces necesarias para trabajar en Java son:

SAX: Lectura de forma secuencial(linea a linea). Consume menos memoria que


DOM.

XML - JAXB (binding): Bidireccional, convertir XML en objeto Java.


XML - JSON : convertir XML a JSON, cada objeto es String, definir obj atributo valor.

5. Excepciones. Clase Throwable.


Controlar los errores en ejecución. Una excepción(son objetos) es un evento que
detiene el flujo normal de secuencias y retorna la información contenida a través del
gestor de excepciones y detiene la aplicación. Las excepciones en Java derivan de la
clase Exception y ésta a su vez de la clase Throwable (que a su vez deriva de Object).
Excepciones Runtime Excepcion no tiene xq ser capturadas en un try/catch.
3
Try/Catch capturar excepciones evitando que el programa deje de funcionar.

Excepciones controladas
Errores fuera de control del programa. Se controlan en tiempo de ejecución.
Utilizan cuando el programa se puede recuperar después de lanzar excepción

Excepciones no controladas
Error dentro de la lógica, no comprueba en tiempo de compilación(ni t-c ni throws),
ocurre si parámetro vacío o null.

Algunos métodos de la clase Throwable son:


 getMessage(): Se usa para obtener un mensaje de error asociado con una
excepción.
 printStackTrace(): Se utiliza para imprimir la excepción.
 toString(): Se utiliza para mostrar el nombre de la excepción junto con el mensaje
que devuelve getMessage().
 Void printStackTrace (PrintStream) o (PrintWriter): Visualiza el objeto y la traza de
pila de llamadas lanzada.

4
ACCESO A DATOS
UF2: Persistencia en BDR-BDOR-BDOO

BDOR → BBDD Objeto-Relacional que se caracteriza por haber evolucionado del


modelo relacional a la orientación a objetos, convirtiéndose en una BBDD híbrida.
Base de datos objeto-relacionales:
>Son una extensión del modelo relacional.
>Soportan tipos de datos básicos y complejos.
>Incorpora conceptos del modelo orientado a objetos.
Características:
- Crear objetos propios para gestionar un tipo de datos personalizados (instancia
de objeto).
- Disfruta beneficios de herencia (relación entre objeto general y específico).
- De esta herencia surge la necesidad de implementar el polimorfismo y
reutilización de código.
- Ocultación datos objeto solo permita (proteger datos guardados) a partir de ops
definidas por ese objetos. (encapsulación).

BDOO → BBDD Orientada a Objetos, y se combinó con BBDD tradicionales. Su uso


simplifica la conceptualización porque permite representar de manera natural los
datos que se quieren guardar y info se guarda mediante objetos como lenguaje POO.
- En cada objeto almacenado se debe indicar qué métodos y atributos tiene,
además de indicar la interfaz por la que se puede acceder a él.
- Los objetos almacenados deben ser identificados mediante un id único, OID, que
no podrá ser modificado.
- Debe tener las características de un SGBD y de un Sistema Orientado a Objetos,
el almacenamiento de los datos se hacen como objetos.

1. Concepto desfase objeto-relacional.


Surge xq el modelo de base de datos relacional trabaja con relaciones y
conjuntos, mientras que el modelo de BBDD orientada a objetos trabaja con objetos
y con las relaciones que existen entre ellos. El concepto de desfase objeto-relacional
es la diferencia existente entre las BBDD relacionales y las BBDD orientadas a
objetos, ya que la forma de construir y de guardar los datos en una y en otra se realiza
de forma distinta.

2. Protocolos de acceso a base de datos. Conectores.


Dos de los protocolos para conectar las bases de datos SQL son ODBC y JDBC.

5
 ODBC (Open Database Connectivity): Es una especificación de Microsoft que
tiene una interfaz en C y que permite el acceso desde cualquier aplicación.
Mezcla características elementales con otras más avanzadas y tiene
complejas opciones incluso para las consultas más simples. Es un protocolo de
conexión a BBDD SQL.
 JDBC (Java Database Connectivity): Ofrece conectividad de BBDD con
aplicaciones Java y proporciona una API(SQL) para acceder a fuentes de datos
principalmente orientados a BBDD relacionales que usan SQL. La tarea que no
puede realizarse con JDBC es desarrollar la vista de la aplicación. Arquitectura
estándar fabricantes crean driver xa que apps Java puedan acceder a datos.
El puente JDBC-ODBC está implementado en Java y usa métodos nativos de
Java para llamar a ODBC, se instala automáticamente con el JDK. El puente
JDBC-ODBC implementa operaciones JDBC traduciéndolas en operaciones
ODBC.
JDBC para BBDD relacionales y ODBC para BBDD objeto-relaciolanes.

¿Qué tareas pueden realizarse con JDBC?


- Conectar a una BBDD.
- Crear sentencias y realizar consultas SQL MySQL.
- Realizar consultas e instrucciones SQL o MySQL para actualizar la BBDD.
- Recuperar, procesar, visualizar y modificar de los registros resultantes de la BBDD.
- JDBC define interfaces realizan operaciones con BBDD y definida paquete java.sql

-JDBC dispone de una interfaz distinta para todos las BBDD, es lo que llamamos
drivers(conector).

-PreparedStatement se precompila una sola vez y se podrá ejecutar las veces que
queramos asignando diferentes valores a los marcadores de posición, en cambio en
los objetos Statement, la sentencia SQL se suministra en el momento de ejecutar la
sentencia. Ambos utilizan los métodos (executeQuery(), executeUpdate(), execute()).

El placeholder en PreparedStatement se representa emdiante el símbolo ?

3. Acceso a datos mediante JDBC.


Para usar Oracle JDBC con Maven, es necesario que descarguemos e instalemos
en el repositorio local de forma manual, configurando la dependencia en el fichero
pom.xml.
JDBC define una API que puede ser utilizada por las apps para abrir una conexión
con una BBDD, enviar consultas, actualizaciones y obtener resultados. Las apps
pueden usar esta API para conectarse a cualquier servidor de BBDD compatible con
JDBC.
La API JDBC proporciona dos modelos de acceso a las BBDD: os modelos de dos y
tres capas.
 Modelo de dos capas: se caracteriza porque la aplicación Java y la base de
datos se comunican entre sí directamente.

6
 Modelo de tres capas: a diferencia del modelo de dos capas, posee una capa
intermedia la cual es la encargada de recibir las consultas SQL y de recibir los
resultados.
Para la norma JDBC existen cuatro tipos de drivers:
 Driver JDBC-ODBC Bridge: Facilita el acceso a una BD JDBC por medio de un
driver ODBC. Transforma las llamadas al API de JDBC en llamadas ODBC.
 Driver Native: Es un tipo de controlador que posee una parte escrita en Java.
Traduce llamadas de la API de JDBC en llamadas del motor de base de datos.
 Driver Network: Controlador de Java que utiliza entorno de red para
comunicarse con la BD. Traduce primero las llamadas al API de JDBC en
llamadas al protocolo de red para luego ser traducida de nuevo al protocolo de
la BD.
 Driver Thin: Controlador de Java puro con protocolo nativo. Traduce las
llamadas al API de JDBC en llamadas del PROTOCOLO de red utilizando el
motor de BD. Para aplicaciones enfocadas a clientes SIN una instalación
Oracle.
 Driver OCI: Para aplicaciones enfocadas a clientes con una instalación Oracle
 Driver thin servidor: Es igual que el driver thin, pero se ejecuta dentro de un
servidor de Oracle con acceso remoto
 Driver interno servidor: Se ejecuta dentro del servidor de elegido

Para trabajar con JDBC es necesario la utilización de interfaces que permitan


trabajar con las bases de datos y a raíz de ellas se dará origen a las clases que se usen.
Las más importantes son:
 Driver: Permite conectarse a una base de datos: cada gestor de base de datos
requiere un driver distinto.
 Connection: Interfaz del conector JDBC representa una conexión con una
BBDD. Una aplicación puede tener más de una conexión.
 Statement: Permite ejecutar sentencias SQL sin parámetros.
-Clase Statement con su funcionalidad int executeUpdate (String consulta)
para sentencias INSERT, DELETE o UPDATE.
-Clase Statement con su funcionalidad boolean execute (String consulta) para
cualquier sentencia.
-ResultSet executeQuery (String consulta): Contiene las filas resultantes de
ejecutar una orden SELECT.

Los objetos Statement se obtienen con una llamada al método


createStatement() de un objeto Connection.

Para seleccionar objetos de la BBDD Oracle usamos Statement, Struct, ResultSet.

Primer paso: Importar las clases necesarias


Segundo paso: Cargar el driver JDBC
Tercer paso: Crear el objeto Connection
Cuarto paso: Crear el objeto Statement
Quinto paso: Recuperar datos con el objeto ResultSet
7
Sexto paso: Liberar el objeto ResultSet
Septimo paso: Liberar el objeto Statement

4. Concepto de mapeo objeto-relacional.


Un sistema Objeto-Relacional es un sistema que permite almacenar Objetos en
sus tablas.
El mapeo objeto-relacional (ORM) permite convertir datos que se encuentran en
una tabla de sistema de BBDD orientado a objetos, a otro SGBD de tipo relacional.
Abstracción de BBDD, independencia de BBDD y reutilización de código. Reducción
del tiempo de desarrollo.
Ventajas:
- Desarrolladores no necesitan conocimiento en SQL para gestión de ORM.
- Promueve abstracción xa mejorar seguridad de datos.
- Guardar procedimientos en la app, permite flexibilidad para cambios.
- Útil BBDD relacionales.
- Realiza todas las op con la BBDD, no es necesario codificar SQL.
- Consultas a través de ORM indep de BBDD.
- ORM disponible cualquier lenguaje POO

Herramientas ORM:
Es una construcción de Hibernate que se utiliza para realizar las conexiones con la
BBDD.
Hibernate: Herramienta Java, mapeo de objetos Java en tablas y atributos de
BBDD relacional; mediante ficheros de XML, que permite establecer relaciones. Tiene
un lenguaje propio de generación de consulta de BBDD (HQL) para simplificar
peticiones de BBDD. Persistencia objetos de una app mediante BBDD relacional. MVC.
Reducción del tiempo de desarrollo. 3Estados.
Para ello se puede crear una sesión a través de la clase Session. Los estados de un
objeto Hibernate son Estado transitorio (transient), Información que contiene una
sesión se representa en la base de datos con identificador -→Estado persistente
(persistent) y Estado separado (detached).Código referente al archivo de
configuración de hibernate: hibernate.cfg.xml *Cuando la información que contiene
una sesión se representa en la BBDD con un identificador, esta en el estado
persistente.

Instancia de Session: Creación y destrucción muy barata y no consume mucha


memoria
Interfaces Hibernate:
- Configuration: Configura hibernate, especifica ubicación documentos utilizado en
el mapeo. (Configuration → Configuración de Hibernate).
- SessionFactory: Permite la obtención de INSTANCIA Session y habitualmente
solo existe una por sesión(una para cada BD). Si se desea utilizar la persistencia en
Hibernate es necesario obtener un objeto Session usando la clase SessionFactory.
- Query: Consultas de la BBDD y se harán en HQL o SQL nativo.
- Transaction(Transaccion): Cualquier error en la transacción producirá un fallo de
la misma. Evita errores de la consulta y ejecuta con commit().
8
- Abstracción de la BBDD.
- Reutilización de código.
- Independencia de la BBDD.

5. Clases persistentes.
Se denominan clases persistentes a las clases que implementan las entidades del
problema, implementadas por la interfaz Serializable. Son similares a las tablas y un
registro será un objeto persistente en esa clase. También poseerán atributos y
métodos get y set.

Características de las bases de datos orientadas a objetos.


 El almacenamiento de datos se hace como objetos.
 Estos objetos deben ser identificados mediante un id único, también
denominado OID, que no podrá ser modificado.
 En cada objeto se debe indicar qué métodos y atributos tiene, además de
indicar la interfaz por la que se puede acceder a él.
 Básicamente tiene que tener las características de un SGBD y de un sistema
OO.

6. Daypo.
- En Java contamos con una clase que proporciona información sobre la estructura y
configuración de una base de datos, como las tablas que contiene, los tipos de datos
que se usan en ellas. → DataBaseMetadata
-Class.ForName (“com.mysql.jdbc.driver”); : La sentencia correcta que te permite
cargar el drive.
-NeoDatis ODB: BBDD cliente/servidor tanto en la misma máquina como en diferentes
.
-OQL es un lenguaje de consulta para BDOO. No incluye operaciones de actualización,
soporta tipo objeto en las sentencias y solo consultas. Posee operadores sobre
colecciones y cuantificadores; lenguaje declarativo SQL, sintaxis similar SQL. Posee una
semántica bien definida; Es Orientado a Objetos y esta basado en modelo ODMG.
Acceso declarativo a los objetos (Propiedades y métodos)
En el lenguaje de consultas OQL para acceder a los atributos y objetos comenzaremos
con el nombre del objeto, seguido de atributos que están conectados a través de un
punto p nombre de relaciones y es necesario hacerlo mediante las expresiones de
camino.
-executeSQL() no es un comando para ejecutar consultas SQL.
-BBDD embebidas son aquellas BBDD que son incorporadas dentro del software del
programa por el desarrollador, de manera que es invisible para el usuario. (MySQL no
embebida).
-H2 y H3 son gestores de código abierto y se caracterizan por soportarlo SQL xa
gestionar la BBDD, No (H3 no existe como gestor SQL).
- DECIMAL no pertenece al tipo Number y FLOAT definir número racionales.
- DATA definir datos de tipo binario.

9
10
Completa el siguiente fragmento de código:
SessionFactory sessionFactory= SessionFactoryUtil.getSessionFactory();
Session session = sessionFactory.openSession ();
Transaction transac = session.beginTransaction ();
// Acciones en la BD
tx.commit ();
session.close ();

11
ACCESO A DATOS
UF3: Persistencia en BD nativas XML

1. Bases de datos nativas XML.


Las bases de datos basadas en XML se diferencian del resto en que su unidad
mínima será el mismo documento XML(único que se almacenan documentos XML,
no han de almacenarse necesariamente en formato de texto), por lo que no poseerá
campos ni almacenará datos. Lo único que almacena son los documentos XML.
-Se define un modelo lógico para un documento XML y se almacenan y recuperan
los documentos según este modelo.
-Existe una relación con la forma de almacenamiento en la que incorpora las
características ASID de cualquier SGDB.
-Posee varios niveles de datos y una alta complejidad.
- Permite el uso de tecnologías de consulta y transformación propias XML,
XQuery, XPath, XSLT, para acceder y tratar la información.
-Indices de nodos (no existe).
-NO es una característica de las BBDD nativas XML se define un modelo lógico
para un documento JSON y se almacenan y recuperan los documentos según este
modelo.

Sus ventajas son:


 Acceso y almacenamiento directamente en formato XML.
 Motor de búsqueda de alto rendimiento.
 Sencillez al añadir nuevos documentos XML.
 Datos heterogéneos.

Aunque también presenta algunos inconvenientes como:


 Complicación al indexar documentos para realizar búsquedas.
 No ofrece funciones de agregación.
 Almacenamiento como documento o nodo; resulta complicado formar nuevas
estructuras.
-”Almacenar versión modificada” con el tipo de almacenamiento esta estrategia es
especialmente útil cuando tenemos un número reducido de documento y los
XML no se actualizan a menudo ni se transfieren a otros sistemas.

12
-”Almacenar como BLOB” como el tipo de almacenamiento esta estrategia es
especialmente útil cuando el archivo contiene contenido estático y solo se
modificará el contenido de la columna por otro nuevo.
-Mapeo de los datos: En esta estrategia tendrán que ser mapeados para que se
puedan transformar y adaptar a la base de datos.

2. Almacenamiento sobre una base de datos.


En los tipos de documentos centrados en datos se puede realizar un mapeo entre
los datos del documento y los del SGBD. Hay tres tipos de almacenamiento sobre una
base de datos:
Campo, mapeo basado en tablas y mapeo basado en objetos:
1. Directamente sobre un campo: usar este método tiene la ventaja de que el
formato se mantendrá, pero no se podrá consultar nada en el documento.
2. Mapeo basado en tablas: los datos en este mapeo serán vistos como filas y
estarán agrupados en forma de tablas. Además, cada fila se corresponderá con
una tupla y cada dato contendrá un campo de esa tabla.
3. Mapeo basado en objetos: los datos serán tratados como objetos serializados
que irán a una tabla y las propiedades irán a las columnas.
-Definición “Mapeo de datos” con el tipo de almacenamiento en esta estrategia
tendrán que ser mapeados para que se puedan transformar y adaptar a la BBDD.

3. eXist.
eXist app para hacer consultas y modificar una base de datos nativa XML, es un
SGBD libre de código abierto en el que se almacenan datos XML con un motor de
base de datos escrito en Java y que es capaz de soportar los estándares de consulta
XPath, XQuery y XSLT, además de indexar documentos. Almacena los documentos en
colecciones y podrán estar anidadas (Cada colección sería un carpeta y los documentos
XML dentro de ellas). El cliente de administración de eXist te permite:
 Creación y borrado de colecciones.
 Incluir y eliminar documentos a las colecciones.
 Modificar documentos.
 Creación de copias de seguridad y restauración de las mismas.
 Administración de usuarios.
 Realización de consultas XPath.
 Navegar por colecciones y escoger un contexto a través del cual se ejecutarán
las consultas.

XSLT → Transformaciones XSL (de XML a otro diferente).


- Estándar W3C, Describe un lenguaje basado en XML para transformar documentos
XML a otro formato que no son XML.
- Transformar documentos entre esquemas XML que permitan su procesamiento por
distintos sistemas.
- Transformar documentos XML en HTML, WML o formato que facilite presentación en
pantalla de ordenador o impresora.
- Transformación de XML a HTML(pág Web) es ppal uso de XSLT.

13
- A partir de XML generar consultas y mostrar el resultado en forma de web

Acceder al valor de los nodos


Acceder al valor de los nodos usa etiquetas <xsl:value-of select>, seleccionar el
nombre, contenido o atributo de un nodo.

Bucles
Etiqueta <xsl:for-each select=”nodo”> </xsl:for-each>, obtener el índice actual
position().

Condicionales
<xsl:if test=”condicion”>
</xsl:if> No admite la condición else.

Ordenar elementos
Etiqueta <xsl:sort order =”ascending”
data-type= “text select=”etiqueta”/>

Variables
Nuevas variables que podremos utilizar durante transformación
<xsl: variable name=”nombre”> valor </xsl:variable>

eXist – Data.
-2Archivos + importante de BBDD en ruta: eXist\webapp\WEB-INF\data. &&
dom.dbx y Collections.dbx; eXist\data donde guardan los archivos + imp de BBDD.
-dom.dbx es el almacém central de datos. En él se almacenan todos los nodos del
documento.
-collections.dbx en él almacena la jerarquia de las colecciones y, estas, se
relacionan con los documentos que contienen, además de incluir un id único a
cada documento.
-elements.dbx donde gurda el índice de elementos y atributos.
-words.dbx por defecto eXist indexa todos los nodos de teto y valores de atriburos
dividiendo el texto en palabras.

-De los 3 tipos de indices en eXist:


-Indice de texto completo o fulltext permite convertir nodos y atributos en tokens de
texto.
-Indice de rango se basan en el tipo de dato de cada valor de los nodos de
documentos.
-Indice Estructurales se encargan de indexar la estructura de los nodos, los
elementos y sus atributos en los documentos XML que se encuentran en una
colección.

Colecciones y Documentos

14
- Colección se engloba un conjunto de documentos XML en estructura árbol (cada
recurso o documentos pertenece a una colección). Colecciones como carpetas en las
cuales se almacenan recursos.

- Estructura en árbol establece caminos que referencie recursos quiera acceder.


Acceder a los datos de estos recursos se trabajan con dos estándares que permiten
acceder y obtener datos desde documentos XML: XPath y XQuery.

4. XPath.
Lenguaje basado en rutas de XML y utiliza navegar forma jerárquica en un XML.
Considera documento XML como árbol de nodos.
Nos permite seleccionar nodos de un documento XML y obtener valores a partir de
su contenido. XPath selecciona parte de doc XML en representación arbórea que se
genera en el documento.
Orden “Node()” devuelve todas las etiquetas dentro de esta carpeta sin incluirla.
Orden “Text()” devuelve el texto dentro de la carpeta.
+Nodos+

+
Sele
cció
n de
nodos+
+Predicados
+
5. XQuery.
El XQuery
(XML Query
Lenguage) un
lenguaje de
consulta de
documentos
XML sobre
colecciones
propuesto por la
W3C. Abarca

15
tanto ficheros en XML, como BBDD relacionales como funciones de conversión
registros a XML. XQuery contiene XPath.
Se trata de un lenguaje similar a SQL que incluye algunas capacidades de
programación. Surge como un equivalente al lenguaje SQL y está destinado al uso en
bases de datos XML. Está considerado como una extensión de XPath 2.0 (está basado
en Xpath). Es un lenguaje de consulta de documentos XML. Puede abarcar tanto
archivos en XML como las bases de datos relacionales como funciones de conversión
de registros a XML. Hay que distinguir entre mayúsculas y minúsculas. Consultas
XQuery permite manipular, transformar y organizar los resultados de las consultas.

XQuery utiliza funciones para realizar las consultas de los documentos XML. Una
sentencia básica de búsqueda en un fichero XML sería:
doc(“nombreFichero.xml”)/biblioteca
a esta sentencia podríamos añadirle predicados para refinar mas las búsquedas:
doc(“nombreFichero.xml”)/biblioteca/libro[precio>35]

-Ejecución de sentencias XQuery en Java, la clase XQConnection es la interfaz que


establece la conexión con la BBDD, y almacena en esta clase toda la información
referente a esta conexión.

-Ejecución de sentencias XQuery en Java, la clase XQPreparedExpression esta clase


nos va a ayudar a preparar el contexto para poder realizar la consulta con Xquery.

-Ejecución de sentencias XQuery en Java, la clase XQResultSequence es la clase que


recoge los resultados de la consulta con Xquery.

-Ejecución de sentencias XQuery en Java, la clase XQException esta clase de error


gestiona los posibles errores que se producen durante el proceso de ejecución de un
consulta a la base de datos.

-Ejecución de sentencias XQuery en Java, la clase XQDataSource es una interfaz que


nos va a permitir a preparar los objetos Xqconnection para preparar la conexión con
la base de datos.

6. Consulta XQuery – Expresión FLWOR.


Para una estructura más elaborada utilizaremos la estructura FLWOR, la cual hace
referencia a:FOR – LET – WHERE - ORDER BY – RETURN
 FOR: Esta expresión se utiliza para almacenar nodos en una variable.
 LET: Se asignan valores resultantes de expresiones XPath a variables para que
la representación quede más simplificada.
 WHERE: Esta expresión filtra los elementos eliminando el resto de valores que
no cumplan con dicha condición.
 ORDER BY: Se utiliza para ordenar los datos según el criterio establecido.
 RETURN: Esta expresión construye el resultado de la consulta en XML.
Un ejemplo de estrutura FLWOR sería:
For $x in doc(“libros.xml”)/biblioteca/libro
16
Where $x/precio>35
Order by $x/titulo
Return $x/titulo

7.Daypo.
-Para solucionar el error por el puerto utilizado utilizaremos la siguiente etiqueta:
<SystemProperty name= jetty.port default=8084 />

17
18
19
ACCESO A DATOS
UF4: Componentes de Acceso a Datos

1. Componente.
Dllo de Software Basado Componentes (DSBC), bases de diseño y dllo de apps
distribuidas. Programación Orientada Componentes enfoca de programación
de módulos de software reutilizables.
Un componente se podría definir como una parte o módulo de una aplicación que
está formado por un conjunto de dependencias e interfaces y un conjunto de
requisitos y que añade funcionalidad a un software. Es una unidad de composición
de aplicaciones software y ha de poder ser desarrollado, adquirido e incorporado al
sistema.
La programación orientada a componentes es una rama de software que se
enfoca en la programación de módulos de software reutilizable. Las características
de un componente son:
 Deber ser independiente de la plataforma que se vaya a utilizar, ya sea
tipo Hardware, Software o un Sistema Operativo.
 Debe ser identificable, que permita su clasificación.
 Debe poseer su propio contenido sin necesitar fuentes externas para
realizar el fin por el que fue desarrollado.
 Debe poder reemplazar(cambiar) por una versión mejor o por otro
componente que lo mejore (aumento de calidad de software, ya que es
posible mejorarlo con el paso del tiempo).
 Solo puede tener acceso a través de su propia interfaz, así los servicios
ofrecidos no deben variar, aunque su implementación sí.
 Debe estar bien documentado.
 Servir para varias aplicaciones.
 Se distribuye a través de paquetes independientes(NO se distribuye a
través de elementos separados), a la hora de ser cargado en una
aplicación se debe hacer durante su ejecución y ser distribuido a través de
un paquete donde se almacenan todos sus elementos.

20
Ejemplo de tecnologías basadas en componentes: EJB, Plataforma JavaBeans y
Plataforma .NET

Tecnología basadas componentes, 2 modelos


- Modelo de componentes: Reglas de diseño de componentes, interfaces y la
interacción.
- Plataforma de componentes: Infraestructura software requerida ejecución apps
basada en componentes.

2. JavaBean o Bean(ejemplo de tecnología basada en componentes).


Propiedades es un atributo de una clase JavaBeans que contiene una serie de
atributos con sus métodos de acceso que permiten la modificación de la apariencia/
el comportamiento/conducta de la app.
Un JPA es una librería de Sun Microsystems y un ORM para Java que gestiona
datos relacionados y facilita su persistencia en la BBDD y la correlación relacional de
objetos.
Un JEE es una plataforma de programación para el desarrollo y la ejecución de
software con el lenguaje de programación java.
Un Bean es una clase de Java que sigue los estándares definidos por JavaBeans.
Es un modelo de componentes, una clase de tiene sus propiedades, sus constructores
y sus getter & setters. Es un componente reutilizable
Un EJB (Herramienta de dllo de componentes + conocida en Java) es una interfaz
de aplicaciones que forma parte del estándar de construcción de aplicaciones JEE. Es
un componente reutilizable, construido en lenguaje Java y manipulado o desde el IDE
(por ejemplo un Bean son las librerías gráficas de AWT, la API de Java que permite
crear aplicaciones con componentes GUI).

Ventajas:
 Reutilización de dicho software.
 Disminuye la complejidad del software (probar pequeños fragmentos del
componente antes de probar el conjunto de todos los componentes
unidos).
 Mejora el mantenimiento.
 Facilidad en la detección de errores.
 Aumento de la calidad de software, ya que es posible mejorarlo con el
paso del tiempo.
Desventajas:
 No siempre se localizan los componentes para un proyecto
 Faltan estándares y procesos de certificación que garanticen la calidad.

Un componente puede ser unido a otros para ejecutar distintas tareas.

21
Para definirlo, métodos Setter y Getter, uno o más constructores y ofrecer acceso
público a sus propiedades mediante los métodos set y get. La propiedad de un Bean
son los atributos capaces de determinar su apariencia y comportamiento.
Tres tipos de Enterprise Java Beans (EJB):
1.-Bean de sesión(tres tipos): Este tipo de clase contiene la lógica de negocio que
puede ser invocada por un cliente local, remoto o se servicio web.
- Tipo Stateless: Es un tipo de EJB que no utiliza sesiones para gestionar los
datos de los EJB.
- Tipo Statefull(bean con estado de sesión): Este tipo se caracteriza por
mantener la sesión del cliente en el contenedor EJB y es capaz de mantener el estado
de un cliente en más de una solicitud.
- Tipo Singleton: Es el tipo de bean que tiene una instancia de sesión única, de
decir, se instancia una vez por app y solo existe para ese ciclo de vida de la app.
2.-Beans controlados por mensaje: Este tipo de clases contiene la lógica de
negocio, pero solo se invocan los métodos al pasar un mensaje.
3.-Beans de entidad o entity: Este tipo de clase encapsulada el estado que puede
persistir en la BBDD.
Beneficios:
• Simplificación del desarrollo de las aplicaciones.
• Portabilidad del componente: la arquitectura EJB proporciona un modelo
simple para generar componentes.
• Independencia: la arquitectura que ofrece esta tecnología permite que el
componente que se desarrolle sea apto para cualquier plataforma(que se va a
utilizar, ya sea de tipo hardware, software o SO).
• Altamente personalizable: este tipo de aplicaciones pueden ser customizadas
sin acceder a la fuente de código.
• Versátil y escalable: es fácil de utilizar tanto a pequeña como a gran escala. Es
fácil de migrar a otros entornos más potentes.
• Facilidad de detección de errores.
Desventajas trabajamos con arquitectura de un EJB es requiere un gran
conocimiento de Java para desarrollar aplicaciones de dicha arquitectura y tiempo de
desarrollo complejo.
Las reglas para definir un Bean son:
 Tener uno o más constructores, como mínimo uno sin argumentos.
 Todos los componentes deben implementar la interfaz Serializable para
poder recuperar sus valores (cuando un campo de un componente Bean
NO se desee serializar se hará uso del modificador Trasient(todos los
atributos son serializados excepto los que son static o transient)).
 El componente se transforma en una cadena de bytes y se guarda en un
fichero.
 Debe ofrecer acceso (público) a sus propiedades mediante métodos get y
set. Ofrece acceso a sus propiedades mediante métodos get y set
 Los nombres de los métodos (getter y setter) deben obedecer a ciertas
normas, como son:

22
o El nombre debe estar precedido por get para una propiedad no
booleana.
o Si es booleana debe ir precedido por get o por is.
o Para almacenar un valor ha de tener el prefijo set.
o Es imprescindible poner la primera letra que los une en mayúscula
(Camel Case) para completar algún método.
o Los métodos (tanto getter como setter) tienen que ser públicos.
o Los métodos marcados como setter tienen que devolver tipo void y
recibir un argumento de la propiedad a la que dan valor.
o Los métodos getter devuelven valor del mismo tipo que corresponde
a la variable solicitada.
Manifest.mf: es el fichero que contiene toda la información sobre el bean y
además indica donde se pueden encontrar otros beans y bibliotecas necesarios para
su ejecución.
El empaquetado de componentes una vez creado el JavaBean es necesario
empaquetarlo para proceder a su distribución y uso por las aplicaciones(especificar,
implementar o empaquetar un componente dependerá de la tecnología utilizada) y
en el empaquetado se crea en fichero JAR que contiene el fichero Manifest.mf.

Las 4 propiedades de un Bean pueden ser simples, indexadas, ligadas o


restringidas. Las propiedades de un Bean son los atributos capaces de determinar su
apariencia y comportamiento. Por ejemplo, Película puede tener las propiedades: id,
nombre, género y duración:
 Simples: Es aquella propiedad que representa un valor único. Tiene un
getter y un setter, y el valor no cambiará
 Indexada: Representa una lista(array) de valores y que es capaz de
devolver todo el listado o el valor que se le indica mediante un índice.
 Ligada(bound): Propiedades que desencadena un evento cuando su valor
cambia. Cuando propiedad cambia notifica a los objetos que están atentos
a los mismos. Para que el Bean soporte propiedades ligadas debe
mantener una lista de objetos que están atentos a su cambio y alertados.
Métodos PropertyChangeSupport.
 Restringida: es capaz de restringir eventos(cambio que se produce
durante la ejecución de una app o programa). Son similares a las ligadas,
pero con la diferencia de que los objetos pueden ser vetados si no poseen
ciertas características.

Persistencia de un JavaBean
-Todo Bean(componente) debe implementar la interfaz Serializable para poder
recuperar su valor en cualquier momento.
-Bean (componente) transforma en una cadena de bytes y se guarda en un fichero
donde se podrá reconstruir con posterioridad.
-Todos los atributos excepto los static o transient son serializables.

3. Daypo

23
Reflexión: se denomina la capacidad que tiene un programa para observar y
modificar su estructura en tiempo de ejecución de un programa.

- Un evento: cambio que se produce durante la ejeción de app o programa

- Un componente se distribuye a través de elementos separados. F


- Una de las ventajas de un componente es su facilidad para detectar errores, pero
un inconveniente es que no se puede reutilizar el software. F
- Un componente puede ser unido a otros para ejecutar distintas tareas. V

Para que una clase pueda considerarse como persistente debe cumplir las
siguientes condiciones:
- Constructor vacío
- Poseer un ID
- Métodos getter y setter y sobreescribir los métodos equals() y hashcode().

24

También podría gustarte