Resumen Acceso Datos
Resumen Acceso Datos
1. Ficheros
Fichero (File en inglés) es tradicionalmente un lugar donde se almacenan fichas,
carpetas y en general documentos.
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
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.
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.
4
ACCESO A DATOS
UF2: Persistencia en BDR-BDOR-BDOO
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.
-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()).
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
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.
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.
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
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.
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.
13
- A partir de XML generar consultas y mostrar el resultado en forma de web
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.
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.
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]
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
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.
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.
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.
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