Persistencia con Hibernate I i ngen í er a d d e l l a P P i rogramac ó ión Práctica /2010

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Persistencia con Hibernate I i ngen í er a d d e l l a P P i rogramac ó ión Práctica 8 2009/2010"

Transcripción

1 Persistencia con Hibernate Ingeniería de la Programación Práctica /2010

2 Índice Parte 1: Introducción a Hibernate. Persistencia de objetos con BD relacionales Persistencia con BD relacionales + mapping objeto relacional. Visión general de Hibernate. Comprobación de configuración en Eclipse. Creación de un proyecto ejemplo. Parte 2: Visión detallada de Hibernate. Obtención de objetos persistentes. Lenguaje HQL (Hibernate Query Language). Query. Archivos de Mapping. Hibernate Console. Tools Hibernate. Ejemplo guiado. 2

3 Persistencia de objetos con BD relacionales Persistencia: es el mecanismo que permite almacenar datos desde memoria de modo que puedan ser recuperados cuando la aplicación se ejecuta de nuevo. La mayor parte de las aplicaciones comerciales utilizan un gestor de base de datos relacional (GBDR) y un lenguaje de programación orientado a objeto. Los objetos deben ser convertidos en tuplas de tablas y a la inversa. Las aplicaciones utilizan normalmente sentencias SQL embebidas en un lenguaje de programación OO. 3

4 BD relacionales + mapping objeto relacional (1) El objetivo es disponer de un marco transparente de persistencia. El programador trabajará con objetos no con sentencias SQL. Los objetos modificados serán salvados de forma transparente en la base de datos. La correspondencia de objetos a tablas se define habitualmente en archivos XML. 4

5 BD relacionales + mapping objeto relacional (2) Marcos de persistencia: Java Data Objects (JDO). Container Managed Persistence (CMP) dentro de Enterprise JavaBeans (EJB) de Sun. Hibernate (Open-Source). 5

6 Visión general de Hibernate Hibernate es una solución para gestionar de manera transparente la persistencia en entornos orientados a objeto. Permite en tiempo de ejecución transformar objetos en tuplas y tuplas en objetos. Solución independiente de la BD utilizada. Utiliza archivos XML: Para definir la transformación de clases a tablas (archivos de mapping ). Para indicar qué base de datos se utilizará (archivo de configuración) 6

7 Visión general de Hibernate: arquitectura Arquitectura: 7

8 Visión general de Hibernate:arquitectura Session: Es un concepto entre la conexión y transacción. Puede entenderse como el conjunto de objetos cargados relacionados con una unidad de trabajo. No es thread-safe. No permite concurrencia. Está pensado a ser usado por un solo thread simultáneamente. t SessionFactory: Es una factoría de sesiones. Proporciona objetos Session. Es thread-safe. Permite concurrencia. Configuration: Encargado de cargar los ficheros de mapping, las propiedades específicas de Hibernate y entonces crear el SessionFactory Transaction: Es opcional. Abstrae del modelo transaccional subyacente: JDBC, JTA UserTransaction, CORBA 8

9 Visión general de Hibernate: estructura de las clases persistentes Para que una clase pueda ser persistente debe tener: Constructor por defecto. Métodos getxxx, setxxx para cada atributo. Un atributo que actúe como identificador. ifi d public class Mensaje { private int id; private String text; private Mensaje SiguienteMensaje; Mensaje() { public Mensaje(String text) { this.text = text; public int getid() { return private void setid(int id) { this.id id = id; public String gettext() { return text; public void settext(string text) { this.text = text; public Mensaje getsiguientemensaje() { return SiguienteMensaje; public void setsiguientemensaje(mensaje SiguienteMensaje) { this.siguientemensaje = SiguienteMensaje; 9

10 Visión general de Hibernate: mappings Los archivos de mapping definen cómo se transforman las clases del modelo en tablas, en particular: Equivalencia atributo columna. Cómo se generan las claves primarias, para las inserciones de registros (generator class). Cómo se relacionan mediante claves ajenas con otras tablas. 10

11 Estructura del Mapping Generador del identificador Mapping de propiedades Mapping de relaciones <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <hibernate-mapping> <class name="prueba.mensaje" table="mensajes"> <id name="id" column="id_mensaje" type = "integer"> "> <generator class="increment"/> </id> <property name="text" column="texto_mensaje" unique="false" /> <many-to-one name="siguientemensaje" cascade = "all" column="siguiente_mensaje" foreign-key = "FK_MENSAJES_1"/> </class> </hibernate-mapping> 11

12 Archivo de configuración <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " <hibernate-configuration> <session-factory> <property name="hibernate hibernate.connection.driver_class class">org.hsqldb.jdbcdriver</property> <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/mensajes</property> <property name="hibernate.connection.username">sa</property> Configuración de la conexión JDBC <property name="hibernate.dialect">org.hibernate.dialect.hsqldialect</property> Variante de SQL <mapping resource = "Mensaje.hbm.xml"/> </session-factory> </hibernate-configuration> Archivos de mapping 12

13 Interface Session La interfaz Session permite recuperar y almacenar objetos en la base de datos a través de una comunicación con el motor de Hibernate. Un objeto sesión se obtiene de una factoría de sesiones: sesion = UtilidadHibernate.getSessionFactory().openSession(); Proporciona una caché (contexto de persistencia) que evita interacciones innecesarias con la base de datos. Cuando ejecutamos las operaciones: find(), update(), save(), saveorupdate(), get(), delete() o cualquier otra operación de la interfaz Session, estamos interactuando de manera transparente con la caché de Hibernate. Las operaciones no se realizan directamente sobre la base de datos se almacenan en la caché. 13

14 Interface Session: Ciclo de vida de persistencia El estado de los objetos está relacionado con el contexto de persistencia (i.e con una sesión). Dentro de la aplicación el ciclo de vida de los objetos con respecto a la persistencia tiene los siguientes estados: Transitorio o volátil (transient): La instancia no está asociada con un contexto de persistencia. Persistente (persistent): Asociado con un contexto de persistencia. Separado ado o independiente (detached): La instancia estaba asociada con un contexto de persistencia que ha sido cerrado. 14

15 Interface Session: Ciclo de vida de persistencia El diagrama muestra los estados de un objeto en una aplicación Hibernate. 15

16 Interface Session: Operaciones Hacer persistente un objeto transitorio. Mensaje Mensaje = new Mensaje("Hola a todo(a)s, primer mensaje."); sesion.save(mensaje); Obtener un objeto si se sabe Mensaje mensaje = (Mensaje) que existe. sesion.get(mensaje.class, ID); Obtener un objeto si no se está seguro de que existe. Borrar un objeto Mensaje mensaje = (Mensaje) tercerasession.load(mensaje.class, ID); sesion.delete(mensaje); Actualizar Salvar o actualizar sesion.update(mensaje); sesion.saveorupdate(mensaje); Sincronizar el contexto de persistencia con la BD. Sesion.flush() 16

17 Transación Una transacción es un conjunto de operaciones sobre una base de datos que terminan en un commit (éxito) o bien en un rollback (fallo). Inicio de transacción Operación A: INSERT INTO.. Operación B: INSERT INTO.. (Éxito) (Error) Rollback Commit 17

18 Transacciones en Hibernate El patrón común es utilizar una sesión por transacción. Obtener una sesión de Hibernate Iniciar una nueva transacción Sesion = UtilidadHibernate.getSessionFactory(). opensession(); Transaction tx = Sesion.beginTransaction(); Ejecutar operaciones Hibernate con la BD Commit transacción Cerrar Sesión try { Sesion.save(Mensaje); tx.commit(); catch( RuntimeException e) { if (tx!= null) { tx.rollback(); throw e; finally { Sesion.close(); 18

19 Visión general de Hibernate: generadores Los generadores de clave pueden ser de los siguientes tipos: Generador Descripción ió native identity sequence Usa identity, sequence o hilo en función del SGDB residente Soportado para DB2, MySQL, SQLServer, Sybase, HSQLDB, Informix. Secuencia DB2, PostgreSQL, Oracle, SAPDB, McKoi, Firebird increment Obtiene el identificador d más alto de la tabla y lo incrementa en uno. hilo uuid.hex Algoritmo hilo. Tipo numérico. Válido únicamente para una BBDD 128-bit UUID. Usa la IP y el timestamp para generar la clave. Clave hexadecimal de tamaño

20 Visión general de Hibernate: acceso a datos Para recuperar un objeto de la base de datos: Session tercerasession = UtilidadHibernate.getSessionFactory().openSession(); Transaction terceratransaction = tercerasession.begintransaction(); int ID = 1; Mensaje mensaje = (Mensaje) tercerasession.get(mensaje.class, ID); mensaje.setsiguientemensaje(new Mensaje("Hola, después de hola a todo(a)s")); terceratransaction.commit(); tercerasession.close(); 20

21 Visión general de Hibernate: acceso a datos Recuperación de objetos mediante HQL: Session secondsession = UtilidadHibernate.getSessionFactory().openSession(); Transaction secondtransaction = secondsession.begintransaction(); List messages = secondsession.createquery("from Mensaje m order by m.text asc").list(); System.out.println("Número de elementos: " + messages.size()); for ( Iterator iter = messages.iterator(); iter.hasnext(); ) { Mensaje loadedmsg = (Mensaje) iter.next(); System.out.println( loadedmsg.gettext() ); secondtransaction.commit(); secondsession.close(); 21

22 Comprobación de configuración en Eclipse Para poder utilizar hibernate tiene que localizar el directorio hibernate-3.2 donde se encuentra hibernate-3.2.jar y las distintas librerías en el subdirectorio \lib. En cualquier proyecto debe situar en el path (Java Build Path) los siguientes jar externos: (para abreviar puede incluir todas) asm.jar asm-attrs.jar c3p jar common-collections.jar common-loggings.jar dom4j.jar jta.jar Hibernate-3.2.jar xml-apis.jar eoncurrent jar ehcache-1.1.jar jacc-1_0-fr.jar Jaxen*.jar Jdbc2*.jar Log4*.jar antlr*.jar Cglib*.jar 22

23 Comprobación de configuración en Eclipse Por otra parte hibernate tools es un plugin que se encuentra instalado dentro de eclipse. Compruebe que en File -> New -> Other se puede ver la siguiente entrada para Hibernate: Compruebe dentro de eclipse que puede ver la perspectiva Hibernate Console 23

24 Comprobación de configuración en Eclipse Por último ya que utilizaremos la base de datos HSQLDB debe incluir el jar en el path del proyecto. 24

25 Creación de un proyecto ejemplo Utilizaremos un ejemplo sencillo para mostrar cómo se pueden insertar y obtener objetos de una base de datos HSQLDB utilizando Hibernate. Queremos almacenar y recuperar instancias de la clase Mensaje: public class Mensaje { private String text; private Mensaje SiguienteMensaje; 25

26 Creación de un proyecto ejemplo Creamos un proyecto java en Eclipse de nombre EjemploHibernate (EjemploHibernate.zip en la web) Es recomendable que no importe el proyecto, los ficheros créelos paso a paso. Para no teclear todo el código puede abrir los ficheros *.java con WordPad y pegar el contenido dentro de archivos de Eclipse. Dentro del directorio src cree un paquete de nombre Prueba y dentro de éste el archivo java Mensaje.java. Toda clase que quiera hacerse persistente debe proporcionar los siguientes i métodos: getxxx y setxxx para acceder a los atributos. 26

27 Creación de un proyecto ejemplo package Prueba; public class Mensaje { private int id; private String text; private Mensaje SiguienteMensaje; Mensaje() { public Mensaje(String text) { this.text = text; public int getid() { return id; private void setid(int id) { this.id = id; public String gettext() { return text; public void settext(string text) { this.text = text; Script de creación de la Base de Datos CREATE TABLE MENSAJES ( ID_MENSAJE INTEGER GENERATED BY DEFAULT AS IDENTITY( START WITH 1, INCREMENT BY 1) PRIMARY KEY, TEXTO_MENSAJE VARCHAR(255), SIGUIENTE_MENSAJE INTEGER, CONSTRAINT FK_MENSAJES_1 FOREIGN KEY (SIGUIENTE_MENSAJE) REFERENCES MENSAJES (ID_MENSAJE) ON DELETE CASCADE ); La clave primaria de la tabla es auto-incrementable. Antes de ejecutar el programa utilice sql explorer para crear la base de datos public Mensaje getsiguientemensaje() { return SiguienteMensaje; public void setsiguientemensaje(mensaje SiguienteMensaje) { this.siguientemensaje = SiguienteMensaje; 27

28 Creación de un proyecto ejemplo Cree dentro de src un paquete de nombre persistencia y dentro de éste una clase java de nombre UtilidadHibernate.java. Copie el contenido de la clase a partir del contenido de EjemploHibernate.zip. Dentro del Paquete Prueba cree la clase Ejemplo1 (marque la opción que crea el main), sustituya el contenido por el archivo que se encuentra en el zip. 28

29 Creación de un proyecto ejemplo Desde MSDOS edite el archivo runserver.bat y sustituya videoteca por mensajes. Abra la perspectiva SQL explorer conecte con la base de datos y ejecute el script de creación. Si aparece un error de conexión compruebe si la base de datos está arrancada. 29

30 Creación de un proyecto ejemplo Para poder usar Hibernate debe activar Hibernate Nature en el proyecto: Proyecto -> Properties -> Hibernate Settings Active la pestaña Enable Hibernate 3 Support. Si aparece algún nombre en Default Hibernate Console Configuration bórrelo. 30

31 Creación de un proyecto ejemplo Creación de los archivos de configuración de hibernate. Dentro del proyecto seleccione: New -> Other. Busque la carpeta Hibernate y seleccione: Hibernate Configuration File. Pulse el botón Next. No es necesario que cambie en la siguiente pantalla el nombre del archivo de configuración (hibernate.cfg.xml). Pulse Next para pasar a la ventana de configuración de la base de datos. 31

32 Creación de un proyecto ejemplo Rellene los campos tal como se muestra en la figura. Hemos seleccionado la base de datos HSQLDB, el driver y la dirección de la conexión. No marque la casilla crear consola de configuración Pulse Finish. En el browser del proyecto le aparecerá el archivo de configuración creado. Puede abrirlo con un editor de texto o bien con un editor XML. 32

33 Creación de un proyecto ejemplo El archivo de configuración es similar a: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.hsqldb.jdbcdriver</property> <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/mensajes</prop erty> <property name="hibernate.connection.username">sa</property> <property name="hibernate.dialect">org.hibernate.dialect.hsqldialect</property> <mapping resource = "Prueba/Mensaje.hbm.xml"/> </session-factory> </hibernate-configuration> Añadido a mano para indicar dónde está el archivo de mapping (explicado después). 33

34 Creación de un proyecto ejemplo Ahora crearemos el archivo XML de mapping entre las clase Mensaje y la tabla Mensajes. Sobre el paquete Prueba pulse: New -> Other -> Hibernate XML mapping File. Ponga el nombre Mensaje.hbm.xml. En la clase a mapear ponga Prueba.Mensaje. 34

35 Creación de un proyecto ejemplo El archivo debe contener lo siguiente: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <hibernate-mapping package="prueba"> <class name="mensaje"> </class> </hibernate-mapping> Sustituya el contenido de <class >. </class> por: <class name="mensaje" table="mensajes"> <id name="id" column="id_mensaje" type = "integer"> <generator class="increment"/> </id> <property name="text" column="texto_mensaje" unique="false" /> <many-to-one name="siguientemensaje" cascade = "all" column="siguiente_mensaje" foreign-key = "FK_MENSAJES_1"/> </class> 35

36 Creación de un proyecto ejemplo También puede utilizar en lugar del anterior, el siguiente archivo de mapping (Mensaje.hbm.xml) <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " net/hibernate dtd"> <hibernate-mapping> <class name="prueba.mensaje" table="mensajes"> <id name="id" column="id ID_MENSAJE MENSAJE" type = "integer"> <generator class="increment"/> </id> <property name="text" column="texto_mensaje" unique="false" /> <many-to-one name="siguientemensaje" cascade = "all" column="siguiente_mensaje" foreign-key = "FK_MENSAJES_1 1"/> </class> </hibernate-mapping> 36

37 Creación de un proyecto ejemplo Creación de la consola de hibernate, dentro del proyecto seleccione: File -> New -> Other - > Console Configuration. Rellene los campos tal como se muestra en la figura. Si aparece el error Ya existe una consola con ese nombre pulse cancelar 37

38 Creación de un proyecto ejemplo La consola la puede abrir abriendo a su vez la perspectiva Hibernate Console. La consola puede utilizarse para acceder a la base de datos mediante el lenguaje de consultas de hibernate (explicado en el siguiente capítulo). 38

39 Creación de un proyecto ejemplo Por último al ejecutar la aplicación (lea el archivo Ejemplo1.java) podemos ver la siguiente consola de ejecución: Ignore los mensajes de advertencia (en rojo en la figura). Compare el código del main() con el contenido de la base de datos. 39

40 Parte 2: Visión detallada de Hibernate Obtención de objetos persistentes. Lenguaje HQL (Hibernate Query Language). Query. Archivos de Mapping. Hibernate Console. Tools Hibernate. Ejemplo guiado. 40

41 El ciclo de vida de persistencia La lógica de la aplicación opera con objetos independientemente de su naturaleza: persistentes (obtenidos de una base de datos) o temporales (transitorios, existentes únicamente en memoria). La aplicación para hacer persistente su estado tiene que interactuar con la capa de persistencia, ya sea para propagar su estado desde memoria a la base de datos, o bien a la inversa para obtener el estado desde la base de datos. En Hibernate para realizar las operaciones anteriores se utiliza el gestor de persistencia y las interfaces de consulta. 41

42 Objetos transitorios Los objetos instanciados mediante new no son por defecto persistentes. Su estado es transitorio, es decir no están asociados con ninguna tupla de la base de datos. Su estado desaparece ece (vía el mecanismo java a de recoge basura) a) cuando dejan de estar referenciados. Los objetos referenciados por objetos transitorios son también considerados d transitorios. i Para convertirlos en persistentes se utiliza el método save() del gestor de persistencia de Hibernate. No existe ningún mecanismo de rollback para objetos transitorios, ya que no son transaccionales. 42

43 Objetos persistentes Los objetos persistentes son instancias que poseen una identidad en la base de datos (i.e. tienen un atributo que es una clave primaria de una tabla de la BD). Pueden ser el resultado de una consulta sobre la base de datos, pueden haber sido creados como transitorios y estar asociados al gestor de persistencia mediante el método save(), o bien pueden haber sido creados desde un objeto persistente. Las instancias persistentes están asociadas con una sesión (explicado después) y son transaccionales (i.e admiten rollback y commit) Las instancias i persistentes t participan i en transacciones y su estado se sincroniza con la base de datos cuando ésta termina. Hibernate posee una estrategia (automatic dirty checking) para detectar qué objetos persistentes han sido modificados durante la ejecución de una transacción, y gestiona de manera transparente la modificación en la base de datos (actualización, borrado, inserción). Por defecto en una actualización modifica todos los campos de la tabla, puede cambiarse el comportamiento (modificar únicamente los campos necesarios) si en el archivo de mapping de la clase se utiliza: Dynamic-update = true 43

44 Objetos separados/independientes Los objetos persistentes se convierten en separados cuando termina una transacción y se cierra una sesión del gestor de persistencia. Desde ese momento no se garantiza que su estado esté sincronizado con el estado de los objetos que existen en la base de datos. Si siguen referenciados por la aplicación, pueden ser reutilizados en una nueva sesión con lo cual se convierten de nuevo en persistentes. La operación evit() es una operación de separación explícita de objetos, se utiliza normalmente por consideraciones i de eficiencia i i de la caché (explicado después). 44

45 El gestor de persistencia Cualquier gestor de persistencia transparente proporciona una API con servicios para: Operaciones básicas CRUD (Create, Read, Update, Delete). Ejecución de consultas. Control de transacciones. Gestión de la caché a nivel de transacciones. En Hibernate se emplean diferentes interfaces: Session, Query, Criteria y Transaction para poder utilizar el gestor de persistencia. La interfaz más importante, aunque todas están relacionadas, es Session, normalmente se asocia con el gestor de persistencia (i.e session y gestión de persistencia se consideran términos intercambiables). 45

46 Convertir en persistente un objeto Dentro de una sesión para convertir un objeto transitorio en persistente se utiliza el método save(). User user = new User(); user.getname().setfirstname("john"); user.getname().setlastname("doe"); ( ); Transaction tx = session.begintransaction(); session.save(user); tx.commit(); // session.flush(); session.close(); La sincronización con la base de datos se realiza al ejecutar el método commit() de la transacción. En ese punto Hibernate obtiene una conexión JDBC ejecuta un sentencia SQL de inserción y al cerrar la sesión la conexión también se cierra. Si la transacción falla el rollback se realiza a nivel de base de datos no a nivel de objetos en memoria. 46

47 Actualizar el estado persistente de una instancia separada 1/2 Cuando se cierra una sesión la instancia de usuario del ejemplo anterior se convierte en separada, perdiéndose la sincronización de estado con la base de datos. Puede de nuevo convertirse en persistente con update() y lock(). El método update() fuerza una actualización del estado persistente en la base de datos, generando una sentencia sql update. user.setpassword("secret"); Transaction tx = sessiontwo.begintransaction(); sessiontwo.update(user); user.setusername("jonny"); tx.commit(); sessiontwo.close(); La llamada a update() hace que el objeto se trate como dirty. Observe que en el ejemplo el estado (nombre de usuario) se cambia después de invocar update(), esto es irrelevante para Hibernate. El nuevo estado se salvará en la base de datos al ejecutar commit(). 47

48 Actualizar el estado persistente de una instancia separada 2/2 La invocación del método lock() asocia el objeto con la sesión actual sin forzar la actualización. Transaction tx = sessiontwo.begintransaction(); sessiontwo.lock(user, LockMode.NONE); user.setpassword("secret"); user.setloginname("jonny"); tx.commit(); sessiontwo.close(); Los cambios realizados a la instancia antes de llamar a lock() no se propagan a la base de datos. 48

49 Obtener un objeto persistente La sesión se utiliza también para obtener objetos persistentes, aunque Hibernate posee un lenguaje de consultas (explicado después), se puede emplear el método get() de sesión para obtener un objeto mediante su clave. Transaction tx = session.begintransaction(); int userid = 1234; User user = (User) session.get(user.class, new Long(userID)); tx.commit(); session.close(); El método get() busca el objeto cuyo id sea Si no existe ninguno con esa clave devuelve null. Una vez cerrada la sesión el objeto pasa al estado separado. 49

50 Actualizar un objeto persistente Cualquier objeto persistente se encuentra asociado con una sesión (contexto de persistencia). Si se modifica su estado mediante el mecanismo llamado automatic dirty checking Hibernate lleva a cabo la sincronización con la base de datos dentro del contexto actual de persistencia. Transaction tx = session.begintransaction(); int userid = 1234; User user = (User) session.get(user.class, new Long(userID)); user.setpassword("secret"); tx.commit(); session.close(); Cuando se ejecuta commit() se produce la sincronización. Obviamente al cerrar la sesión el objeto pasa al estado separado. 50

51 Convertir un objeto persistente en removed. Los objetos persistentes se pueden convertir en transitorios mediante el método delete(). Transaction tx = session.begintransaction(); int userid = 1234; User user = (User) session.get(user.class, new Long(userID)); session.delete(user); tx.commit(); session.close(); La sentencia SQL de borrado se ejecuta cuando la sesión se sincroniza con la base de datos mediante el commit. Al cerrar la sesión el objeto se convierte en transitorio, si desaparecen las referencias al mismo, el mecanismo de liberación de memoria lo destruye. 51

52 Obtención de objetos persistentes Para extraer objetos desde la base de datos en Hibernate se pueden utilizar las siguientes opciones: Navegar por el grafo de objetos: Una vez cargado un objeto y dentro de una sesión se puede acceder a sus propiedades y métodos. Esto origina que el gestor de persistencia i cargue automáticamente t los nodos (objetos) al intentar t acceder por navegación a alguna de sus propiedades. unpedido.cliente.getnombre(); Obtenerlos mediante el identificador (id), es el método más conveniente cuando el identificador se conoce. Utilizando el lenguaje de consultas de Hibernate (HQL) una versión orientada a objetos de SQL. Utilizando el lenguaje SQL nativo de la base de datos, donde Hibernate realiza la conversión de los registros (JDBC result set) en grafos de objetos persistentes. 52

53 Lenguaje de consultas de Hibernate (HQL) HQL es un dialecto orientado a objetos del lenguaje SQL. HQL no es un lenguaje de manipulación de datos al estilo de SQL, se utiliza únicamente para obtener datos. Usualmente no se utiliza para actualizaciones, inserciones y borrados. El gestor de persistencia se encarga de la sincronización (de acuerdo al estado) de los objetos con la base de datos. Las características principales son las siguientes: Permite obtener únicamente propiedades de una entidad o entidades sin necesidad de cargar el contenido de toda ella (proyección). Permite la ordenación y paginación del resultado de consultas. Admite consultas de agregado con group by, having y funciones de agregado como sum,min,max. Joins externos. Posibilidad d de invocar funciones SQL definidas id por el usuario. Consultas anidadas. 53

54 Lenguaje de consultas de Hibernate (HQL) HSQL se encarga de la traducción de consultas realizadas sobre objetos a consultas realizadas sobre registros y a la inversa, convierte los registros en objetos. Sobre el diagrama de clases de diseño, la consulta HSQL: FROM Persona P where P.categoria.id = 3 Se traduce en la sentencia SQL: Select ID, Nombre, Apellidos from Personas where categoria =3 54

55 Consultas HQL Consultas simples: Cláusula from: selecciona instancias. From Usuarios // devuelve todas las instancias de usuarios. From Usuarios as usuario // similar al anterior utilizando una alias From Usuarios, Grupo // Producto Cartesiano Cláusula select: selecciona objetos y propiedades que devuelve en la consulta select cliente.contacto.apellido from Cliente as cliente Cláusula where: from Usuarios as usuario where usuario.nombre='maria select usuario.nombre from Usuarios usuario where usuario.nombre like 'mari% from Documentos doc, Usuarios usuario where doc.usuario.nombre = usuario.nombre La propiedad especial id puede utilizarse para referirse al único identificador de un objeto. from Documentos as doc where doc.id = from Documentos as doc where doc.autor.id = 69 Cláusula order by: from Usuarios usuario order by usuario.nombre asc, usuario.fechacreacion desc, user. Group by: select sum(documento) from Documentos documento group by documento.categoria 55

56 Query: definición de consultas La interface Query define varios métodos para controlar la ejecución de consultas. Para crear una consulta, en el contexto de una sesión, se utilizan los métodos createquery() y createsqlquery: createquery() se emplea para consultas HQL: Query hqlquery = session.createquery("from Usuario"); createsqlquery se usa para consultas en SQL nativo: Query sqlquery = session.createsqlquery( "select {u.* from USUARIOS {u", "u", Usuario.class); O de manera alternativa: Query sqlquery = session.createsqlquery("select {usuario.* from USUARIOS {usuario").addentity("usuario", Usuario.class); En ambos casos se obtiene una instancia del objeto Query pero no se ejecuta ninguna consulta sobre la base de datos. 56

57 Query: paginación y enlace de parámetros La interfaz Query soporta la paginación de resultados: Query query = session.createquery("from Usuario u order by u.nombre asc"); query.setmaxresults(10); Incluso en consultas sql nativas, Hibernate se encarga de reescribir la consulta: Query sqlquery = session.createsqlquery("select {u.* from USUARIOS {u").addentity("u", Usuario.class); sqlquery.setfirstresult(40); sqlquery.setmaxresults(20); Los parámetros de una consulta parametrizada se pueden enlazar por posición o por nombre: Query q = session.createquery("from Event where name =? "); q.setparameter(0, "Opening Plenary"); q.setparameter(0, "Opening Plenary", Hibernate.STRING); //equivalente al anterior En los parámetros por nombre no es necesario utilizar la posición: Query q = session.createquery("from Event where name = :name"); q.setparameter("name", "Opening Plenary"); 57

58 Query: paginación y enlace de parámetros 2/2 El enlace de parámetros admite también formas abreviadas: String querystring = "from Item item + " where item.description like :search + " and item.date > :mindate"; Query q = session.createquery(querystring).setstring("search", searchstring).setdate("mindate", i mdate); Por defecto Hibernate, antes de ejecutar una operación de consulta, efectúa una actualización (flush) del contexto de persistencia para garantizar que los datos obtenidos por la consulta son datos actuales y no entran en conflicto con los datos en memoria. En algunas situaciones como una secuencia de consulta-modificación- consulta-modificación, donde se sabe que no hay conflicto entre los datos en memoria y en la base de datos se puede cambiar el comportamiento por defecto utilizando el método setflushmode(). Query q = session.createquery(querystring).setflushmode(flushmode.commit); 58

59 Query: ejecución e iteración sobre el resultado El método list() ejecuta las consultas asociadas a una Query y devuelve el resultado como una lista de java.util.list; List result = myquery.list(); El método iterate() permite también ejecutar consultas. Query categorybyname = session.createquery("from Category c where c.name like :name"); categorybyname.setstring("name", categorynamepattern); Iterator categories = categorybyname.iterate(); Con iterate() la ejecución obtiene la id de las instancias de categoría, cuando se itera sobre el resultado el resto de la información la busca en la caché, si no existe genera otra consulta de selección. Útil cuando está también habilitada la caché de segundo nivel en otro caso genera n+1 consultas de selección. Si se quiere obtener toda la información debe utilizarse: Query categorybyname = session.createquery("from Category c where c.name like :name"); categorybyname.setstring("name", categorynamepattern); List categories = categorybyname.list(); y 59

60 Ejemplo Mapping: Transformaciones de una clase public void setapellido(string Clase sin relaciones apellido) { Apellido = apellido; public class Contacto implements Serializable { public String get () { private int id; return ; private String Nombre; private String Apellido; public void set (string ) { private String ; this. = ; public Contacto() { public int getid() { //constructor por defecto return id; public Contacto(String nombre, String public void setid(int id) { apellido, String , int id) { this.id id = id; Nombre = nombre; Apellido = apellido; public String getnombre() { this. = ; return Nombre; this.id = id; public void setnombre(string nombre) public String getapellido() { { return Apellido; Nombre = nombre; 60

61 Ejemplo Mapping: Transformaciones de una clase Archivo de correspondencia <hibernate-mapping> <class name ="negocio.contacto" table = "CONTACTOS"> <id name ="id" type = "integer" column ="ID"> <generator class="assigned"></generator> </id> <property name="nombre"> <column name="nombre" length="100" /> </property> <property name="apellido"> <column name="apellido" length="100"/> </property> <property name=" "> <column name=" " length="200"/> </property> </class> </hibernate-mapping> 61

62 Mapping Especialización Hay tres formas de traducir una jerarquía de especialización a tablas relacionales: Una tabla por cada subclase. Una tabla para toda la jerarquía. Una tabla por cada clase de la jerarquía. Visual Paradigm for UML Community Edition(Universidad Polit?nica de Valencia) DetallesFacturacion -propietario : string TarjetaCredito -Numero : string -fechaexpedicion : string -fechacaducidad : string CuentaBancaria -NumCuenta : string -banco : string -CodigoSWIFT : string Aunque hay 4 tipos de archivos de correspondencia, que en Hibernate se llaman: Tabla por cada clase concreta sin polimorfismo implícito. Tabla por cada clase concreta (con uniones). Una tabla para toda la jerarquía. Una tabla por cada clase de la jerarquía. 62

63 Especialización: Tabla por cada clase concreta sin polimorfismo implícito. Se utiliza una tabla por cada clase no abstracta, en el ejemplo el modelo relacional queda: <<Tabla>> Tarjeta de crédito TarjetaCreditoID (clave primaria) Propietario Numero FechaExpedicion FechaCaducidad <<Tabla>> Cuenta Bancaria CuentaID (clave primaria) Propietario NumCuenta Banco CodigoSwift Los archivos de correspondencia de cada subclase son independientes y se crean como en el ejemplo precedente. La jerarquía de clases existe en la capa de dominio, pero en el modelo relacional existen tablas para las subclases únicamente. 63

64 Especialización: Tabla por cada clase concreta sin polimorfismo implícito. Inconvenientes: No apropiado si se necesitan consultas polimórficas sobre la superclase. Una consulta SQL sobre detalles de facturación tiene que traducirse en tantas consultas como subclases de la jerarquía. Tampoco puede utilizarse si las superclase tiene e relaciones es polimórficas como la de la figura: Visual Paradigm for UML Community Edition(Universidad Polit?nica de Valencia) DetallesFacturacion -propietario : string 1 0* Clase A TarjetaCredito -Numero : string -fechaexpedicion : string -fechacaducidad : string CuentaBancaria -NumCuenta : string -banco : string -CodigoSWIFT : string 64

65 Especialización: Tabla por cada clase concreta con uniones. Es una variación de la estrategia anterior. Para aael ejemplo poexisten como oen el caso aoanterior dos tablas. aba Se utiliza un archivo de correspondencia. <hibernate-mapping> <class name="detallesfacturacion" abstract="true"> <id name="id" column="detalles_id" type="long"> <generator class="native"/> </id> <property name= "propietario" column= "PROPIETARIO" type="string"/>... <union-subclass name="tarjetacredito" table="tarjetaredit0"> <property name="numero" column="numero"/> <property name="fechaexpedicion" i column="fechaexpedicion"/> <property name="fechacaducidad" column="fechacaducidad"/> </union-subclass> <union-subclass name="cuentabancaria" table="cuentabancaria">... </union-subclass> </class> </hibernate-mapping> 65

66 Especialización: Tabla por cada clase concreta con uniones. En una consulta sobre DetallesFacturacion Hibernate genera una consulta de unión con las tablas del ejemplo. Las relaciones polimórficas son también posibles, ya que Hibernate se encarga de simular la tabla asociada a la superclase. 66

67 Especialización: Tabla para toda la jerarquía La jerarquía completa se traduce a una única tabla. Se desnormaliza el modelo relacional y es necesario introducir un discriminador. Funciona bien con las consultas polimórficas. Tiene el inconveniente de los valores no nulos en las tablas asociadas a las subclases, ahora pueden tomar valores nulos. <<Tabla>> Detalles Facturación DetallesID (clave primaria) TipoDetalles (discriminador) Propietario NumCuenta Banco CodigoSwift Numero FechaExpedicion FechaCaducidad 67

68 Especialización: Tabla para toda la jerarquía En el archivo de correspondencia se define la traducción de la siguiente forma: <hibernate-mapping> <class name="detallesfacturacion" table="detallesfacturacion"> <id name="id" column="bdetallesid" type="long"> <generator class="native"/> "/> </id> <discriminator column="tipodetalles" type="string"/> <property name="propietario" column= "PROPIETARIO" type="string"/>... <subclass name="tarjetacredito" discriminator-value= "TC"> <property name= "Numero" column="numero"/> <property name="fechaexpedicion" column="fechaexpedicion"/> <property name="fechacaducidad" column="fechacaducidad"/> </subclass> <subclass name= "CuentaBancaria" discriminator-value= CB >... </subclass> </class> </hibernate-mapping> 68

69 Especialización: Tabla para cada clase. Cada clase de la jerarquía se traduce en una tabla. La clave primaria de la tabla asociada a la superclase actúa como clave primaria y ajena en las tablas asociadas a las subclases. <<Tabla>> Detalles Facturación DetallesID (clave primaria) Propietario <<Tabla>> Cuenta Bancaria CuentaID (clave primaria) NumCuenta Banco CodigoSwift <<Tabla>> Tarjeta de crédito TarjetaCreditoID (clave primaria) Numero FechaExpedicion FechaCaducidad El esquema está normalizado, las asociaciones polimórficas son fácilmente representables mediante claves ajenas. Si la jerarquía es compleja puede resentirse la eficiencia i i en las consultas. 69

70 Especialización: Tabla para cada clase. Con respecto al archivo de correspondencia, tiene la forma: <hibernate-mapping> <!-- Una tabla para cada clase de la jerarquía --> <class name="detallesfacturacion" table="detallesfacturacion"> <id name="id" column="detallesid" type="long"> <generator class="native"/> </id> <property name= propietario" column="propietario" type="string"/>... <joined-subclass name="tarjetacredito" table="tartjetacredito"> <key column="cuentaid"/> <property name= Numero" column="numbero"/> <property name="fechaexpedicion" column="fechaexpedicion"/> <property name= fechacaducidad" column= FECHACADUCIDAD"/> </joined-subclass> <joined-subclass name="cuentabancaria" table= CUENTABANCARIA">... </joined-subclass>... </class> </hibernate-mapping> 70

71 Relaciones y colecciones La multiplicidad en el modelo conceptual de las relaciones de asociación /agregación puede ser: 1:1 (one-to-one) N:1 (many-to-one) 1:N (one-to-many) N:M (many-to-many) En el caso de relaciones con multiplicidades muchos, surge el concepto de colección en Hibernate. Hibernate contiene las siguientes colecciones: Colección Hibernate Colección Java Descripción set java.util.set Colección no ordenada de valores de objetos sin repeticiones. map java.util.map Colección de pares clave/valor. list java.util.list Colección ordenada de valores de objetos, admite repetidos. bag java.util.list t Colección no ordenada d de valores de objetos, admite repetidos. array - Colección indexada, con repetidos, de valores de objetos. primitive-array - Colección indexada, con repetidos, de valores primitivos. idbag java.util.list Colección muchos a muchos no ordenada, con repetidos, utilizando una clave adicional. 71

72 Ejemplo: Preparación Primero: Cree el proyecto videoteca Añada la librería hibernate23.jar y las encontradas en /lib Active Project Preferences Hibernate Settings Cree el paquete Negocio Utilizaremos el diagrama de clase de la figura 72

73 Ejemplo: Preparación Para cada clase: Atributos privados. Colecciones persistentes deben implementar una interfaz: Set peliculas = new HashSet(); List peliculas = new ArrayList(); Constructor por defecto sin código ni parámetros. Getters y setters públicos para cada atributo. Atributo identificador (id) con setter privado. package Negocio; import java.util.collection; import java.util.hashset; import java.util.iterator; import java.util.set; public class Director { private int iddirector; private String nombre = ""; private Set peliculas = new HashSet(); public Director(){ public int getiddirector() {return iddirector; private void setiddirector(int iddirector) {this.iddirector = iddirector; public String getnombre() {return nombre; public void setnombre(string nombre) {this.nombre = nombre; public Set getpeliculas() {return peliculas; public Iterator peliculasiterator() {return peliculas.iterator(); public boolean addpeliculas(pelicula pelicula) { return peliculas.add(pelicula); public void setpeliculas(hashset peliculas) {this.peliculas = peliculas; public boolean ispeliculasempty() {return peliculas.isempty(); public boolean removepeliculas(pelicula pelicula) { return peliculas.remove(pelicula); 73

74 Ejemplo: Preparación Cree el paquete AccesoADatos Diseñe el modelo relacional con Clay (ModeloRelacional.clay). Declare las claves primarias i como auto-increment t Genere el script de definición de la BD (ModeloRelacional.sql) Arranque HSQLDB en modo servidor, creando una bd vacía (videoteca). Ejecute el script ModeloRelacional.sql desde SQL Explorer Importe y ejecute el script LlenarTablas.sql 74

75 Ejemplo: Ficheros de mapping Inicialmente vamos a definir relaciones unidireccionales File New Other Hibernate XML Mapping File Mapping Pelicula: Relación many-to-one entre Pelicula y Director mediante la clave ajena IDDIRECTOR <class name="pelicula" table="pelicula" schema="public"> <id name="idpelicula" type="int"> <column name="idpelicula" /> <generator class= native" /> </id> <property name="titulo" column="titulo"/> <property name="fecha" column="fecha" /> <property name="precio" column="precio" /> <property name="argumento" column="argumento"/> <many-to-one name="director" class="director" > <column name="iddirector" /> </many-to-one> one> <many-to-one name="genero" class="genero" > <column name="idgenero" /> </many-to-one> </class> Estrategia de generación de ids: escoge la mejor según el SGBD. En este caso es equivalente a increment 75

76 Ejemplo: Ficheros de mapping Mapping Director. <class name="director" " table="director" schema="public lazy="false"> l "> </class> <id name="iddirector" type="int"> </id> <column name="iddirector" /> <generator class= increment" /> <property name="nombre" column="nombre" /> Mapping Genero. <class name="genero" table="genero" schema="public" lazy="false"> </class> <id name="idgenero" type="int"> </id> <column name="idgenero" /> <generator class= increment" /> <property name="nombregenero" column="nombre" /> lazy permite que se carguen en memoria los objetos que forman parte de una asociación 76

77 Ejemplo: Fichero de configuración de Hibernate Desde la carpeta src del proyecto: New Other Hibernate -> Hibernate Configuration File <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " 3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.hsqldb.jdbcdriver</pr operty> <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/video ti h ldb h l lh t/ id teca</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.dialect">org.hibernate.dialect.hsqldialect</proper ty> <mapping resource="negocio/pelicula.hbm.xml"/> <mapping resource="negocio/director.hbm.xml"/> <mapping resource="negocio/genero.hbm.xml"/> </session-factory> </hibernate-configuration> Añadir a mano 77

78 Ejemplo. Cree el paquete utilidades y dentro de éste incluya la clase UtilidadHibernate.java. Incluya la clase capanegocio.java en el paquete Negocio. Cree el paquete DemoMulticapaHibernate y cree la clase Principal.java con método main(). Cree el paquete AccesoADatos y ponga dentro las interfaces DAO y las clases DAO para usar con Hibernate, según se explica a continuación. 78

79 Ejemplo Paquete AccesoAdatos Crear la clase PeliculaDAOHibernateImp que implementa a la interfaz IPeliculaDAO: public class PeliculaDAOHibernateImp implements IPeliculaDAO { private Session sesion = null; // Hibernate Session private Transaction tx = null; // Hibernate Transaction public void createmovie(pelicula p) { // TODO Auto-generated method stub try { sesion = UtilidadHibernate.getSessionFactory().openSession(); tx = sesion.begintransaction(); sesion.save(p); tx.commit(); catch (HibernateException e) { rollback(); throw e; finally { sesion.close(); 79

80 Paquete AccesoAdatos: Dao Película Las operaciones DAO utilizan a Session, Query y Transaction: private void rollback() { try { if (tx!= null) { tx.rollback(); catch (HibernateException ignored) { // No se puede hacer rollback de la transacción; El resto de operaciones tienen el mismo patrón: Abrir sesión, iniciar transacción Llamar a la correspondiente operación de sesion (update, delete, etc.), o bien utilizar el lenguaje de consultas de Hibernate. Commit sobre la transacción. Cerrar la sesión. 80

81 Paquete AccesoAdatos: Dao Película Para borrar una película por id. public void deletemovie(int id) throws PeliculaNoEncontradaExcepcion { // TODO Auto-generated method stub try { sesion = UtilidadHibernate.getSessionFactory().openSession(); tx = sesion.begintransaction(); Object pelicula = sesion.load(pelicula.class, id); sesion.delete(pelicula); li l tx.commit(); catch (HibernateException e) { rollback(); throw new PeliculaNoEncontradaExcepcion(); finally { sesion.close(); 81

82 Paquete AccesoAdatos: Dao Película O bien pasando el objeto a borrar. public void deletemovie(pelicula p) throws PeliculaNoEncontradaExcepcion { // TODO Auto-generated method stub try { sesion = UtilidadHibernate.getSessionFactory().openSession(); tx = sesion.begintransaction(); sesion.delete(p); tx.commit(); catch (HibernateException e) { rollback(); throw new PeliculaNoEncontradaExcepcion(); finally { sesion.close(); 82

83 Paquete AccesoAdatos: Dao Película Para obtener todas las películas: public ArrayList findpeliculas() { // TODO Auto-generated method stub try { sesion = UtilidadHibernate.getSessionFactory().openSession(); sesion.begintransaction(); ArrayList ListaPeliculas = (ArrayList) sesion.createquery("from Pelicula").list(); sesion.gettransaction().commit(); return ListaPeliculas; catch (HibernateException e) { rollback(); throw e; finally { sesion.close(); ose(); 83

84 Ejemplo: Capa Negocio La capa de negocio contiene: Un paquete con la definición de las clases Pelicula,, Director y Genero. Una clase de nombre capadenegocio con las colecciones ListaPelicula, ListaDirectores y ListaGeneros public class capanegocio { private ArrayList ListPeliculas = null; private ArrayList ListGeneros = null; private ArrayList ListDirectores = null; static private capanegocio ref_capanegocio = new capanegocio(); private capanegocio() { static public capanegocio getcapanegocio() { return ref_ capanegocio; public void finalize() { UtilidadHibernate.shutdown(); 84

85 Capa de negocio: clase capanegocio El resto de los métodos es de la forma: public void GetPeliculas() { if (ListPeliculas == null) { PeliculaDAOHibernateImp PeliculaDAOH = new PeliculaDAOHibernateImp(); ListPeliculas = PeliculaDAOH.findPeliculas(); public ArrayList GetListaPeliculas() { return ListPeliculas; l 85

86 Ejemplo: Capa Negocio public void UpdatePelicula(Pelicula p1) { // actualiza la capa de negocio con la película p, la busca por oid Pelicula p = null; for (int i = 0; i < ListPeliculas.size(); i++) { p = (Pelicula) ListPeliculas.get(i); if (p.getidpelicula()== p1.getidpelicula()) { ListPeliculas.set(i, set(i p1); break; PeliculaDAOHibernateImp PeliculaDAOH = new PeliculaDAOHibernateImp(); try { PeliculaDAOH.updateMovie(p); catch (PeliculaNoEncontradaExcepcion e) { // TODO Auto-generated catch block e.printstacktrace(); 86

87 Ejemplo: Probar la aplicación public static void main(string[] args) { capanegocio micapanegocio = capanegocio.getcapanegocio(); // Cargar objetos desde la BD micapanegocio.getpeliculas(); micapanegocio.getdirectores(); micapanegocio.getgeneros(); micapanegocio.listarpeliculas(); // Añade una Película Director d = (Director) micapanegocio.getdirectoractual(1); Genero g = (Genero) micapanegocio.getgeneroactual(1); Pelicula p = new Pelicula(); p.setdirector(d); p.setgenero(g); p.setfecha("2007"); p.settitulo("pelicula Nueva"); micapanegocio.addpelicula(p); micapanegocio.listarpeliculas(); 87

88 Ejemplo: Probar la aplicación // Borrar la Pelicula con id=2 micapanegocio.borrarpelicula(2); micapanegocio.listarpeliculas(); // Actualizar la Pelicula con id=3 Pelicula p2 = (Pelicula) micapanegocio.getpeliculaoid(3); p2.settitulo("pelicula actualizada"); micapanegocio.updatepelicula(p2); micapanegocio.listarpeliculas(); 88

89 Ejemplo El explorador de paquetes debe mostrar esta estructura 89

90 Modificaciones a la aplicación Generación de claves por programa En los ficheros de mapping.hbm.xml sustituir native por assigned En el código.java: Cambiar la visibilidad de los métodos setidxxx a public Implementar el algoritmo de asignación de ids en la capa de negocio. En la aplicación ejemplo se utiliza el método GetNextOIDPelicula() Implementación de asociaciones bidireccionales Para representar la relación one-to-many entre Director y Pelicula, se añade en el fichero Director.hbm.xml <set name="peliculas" inverse="false"> <key> <column name="iddirector" /> </key> <one-to-many class="negocio.pelicula Pelicula" /> </set> 90

91 Referencias Hibernate in action. Christian Bauer; Gavin King. Manning Hibernate Quickly. Patrick Peak; Nick Heudecker. Manning Java Persitence with Hibernate. Christian Bauer; Gavin King. Manning Cachés, concurrencia e Hibernate. Martín Pérez Mariñán accesible en: 91

Instructor: Gilberto G. Flores Vidaña

Instructor: Gilberto G. Flores Vidaña Instructor: Gilberto G. Flores Vidaña Lección 1: Introducción a ORMs 1. Conceptos Básicos 2. Las librerías 3. El descriptor 4. Registro de los componente 5. Los mappings Objetivos Conocer las definiciones

Más detalles

Guía a IReport y HQL. Conexión a HSQL utilizando SQL.

Guía a IReport y HQL. Conexión a HSQL utilizando SQL. Guía a IReport y HQL Conexión a HSQL utilizando SQL. Fechas en la base de datos Los campos fecha en la base de datos se pueden almacenar de las siguientes formas: Utilizando Date: Crea una fecha en formato

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

RUEDA TORRES DULCE CAROLINA 3CM2 HIBERNATE EN UNA APLICACIÓN WEB

RUEDA TORRES DULCE CAROLINA 3CM2 HIBERNATE EN UNA APLICACIÓN WEB 3CM2 HIBERNATE EN UNA APLICACIÓN WEB 8 DE MAYO DE 2012 1. CREACION DE LA BASE DE DATOS Para llevar a cabo esta práctica se utiliza una base de datos MySQL llamada Sakila, una muestra gratis de base de

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

%& %)& '$!%*+ $, %%%&$ %%

%& %)& '$!%*+ $, %%%&$ %% OBJETIVO!!"#$$ %& '(%"#% (% %& %)& '$!%*+ $, %%%&$ %% REQUERIMIENTOS SOFTWARE VERSIÓN LINK Java Development Kit (JDK) 6 http://java.sun.com NetBeans 6.1 http://www.netbeans.org MySQL 5.0 http://dev.mysql.com/

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones para persistencia (I) Ingeniería del Software II Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

Trabajos de Ampliación. Bases de datos NoSQL.

Trabajos de Ampliación. Bases de datos NoSQL. BASES DE DATOS NoSql Son bases de datos pensadas para aplicaciones que hagan un uso intensivo de la misma. Estas bases de datos permiten una mayor flexibilidad y facilidad a la hora de introducir los datos

Más detalles

T12 Vistas y tablas temporales

T12 Vistas y tablas temporales 1 de 9 17/05/2013 14:01 Lecciones SQL > T12 Vistas y tablas temporales En esta sesión vamos a mostrar dos tipos de objetos de uso habitual en cualquier SGBD: las vistas y las tablas temporales. Mientras

Más detalles

SMS Gestión. manual de uso

SMS Gestión. manual de uso SMS Gestión manual de uso índice qué es SMS Gestión 2 acceso al servicio 3 01 acceso con la clave de servicios de Orange 4 02 acceso personalizado 6 02.1 cómo personalizar su acceso a la aplicación 7 02.2

Más detalles

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades INTRODUCCION Uno de los objetivos del curso es modelar a través de un diagrama las estructuras lógicas requeridas para almacenar los datos y resolver las consultas del sistema información que requiera

Más detalles

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PHPMYADMIN Y MYSQL Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PhpMyAdmin es una herramienta para la administración del servidor de base de datos MySQL que dispone

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net Marcos de Desarrollo Diseño e implementación de aplicaciones Web con.net Prácticas de laboratorio (.NET) Planificación de clases prácticas 1. Introducción al entorno de trabajo 2. Ejemplos C# 3. Ejemplos

Más detalles

COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC

COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC TITULO: COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC RESUMEN: La idea de este documento es mostrar una serie de acciones y ayudas básicas para intentar determinar y solucionar problemas en la

Más detalles

CURSO DE SQL SERVER 2005

CURSO DE SQL SERVER 2005 CURSO DE SQL SERVER 2005 Una vez finalizado el curso, el alumno estará preparado para: Instalar y configurar SQL Server 2005. Comprender los conceptos más importantes del diseño de bases de datos. Crear

Más detalles

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010 INTRODUCCION Los objetos usados en aplicaciones JAVA mantienen su estado y comportamiento mientras la aplicación se halle en ejecución. Generalmente se necesita mantener el estado y comportamiento de los

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

BASE DE DATOS QUÉ ES UNA BASE DE DATOS? BASE DE DATOS BASE DE DATOS QUÉ ES UNA BASE DE DATOS? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Actualmente la mayoría de

Más detalles

10. El entorno de publicación web (Publiweb)

10. El entorno de publicación web (Publiweb) 10. El entorno de publicación web (Publiweb) 10.1. Introducción El entorno de publicación Web es una herramienta que permite la gestión de nuestras páginas Web de una forma visual. Algunos ejemplos de

Más detalles

Kaldeera Advanced Forms 2009 Guía del usuario

Kaldeera Advanced Forms 2009 Guía del usuario Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced

Más detalles

Tutorial básico del entorno de desarrollo Eclipse.

Tutorial básico del entorno de desarrollo Eclipse. Tutorial básico del entorno de desarrollo Eclipse. Arrancar Eclipse. Después de descomprimir la aplicación, dar doble clic sobre el ícono ejecutable para arrancar la aplicación. En caso de que se presente

Más detalles

Descarga, instalación y uso de herramientas:

Descarga, instalación y uso de herramientas: Descarga, instalación y uso de herramientas: Eclipse: Instalación de Eclipse (Más información en http://www.eclipse.org/) 1. Copiar, descomprimir e instalar si es necesario la última versión de Eclipse

Más detalles

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported PROGRAMACIÓN ORIENTADA A OBJETOS APLICADA A BASES DE DATOS Por LAURA NOUSSAN LETTRY BrowserSQL MySQL Workbench en Linux (Abril 2015, Mendoza) Aviso Legal El presente libro electrónico se distribuye bajo

Más detalles

Tutorial Enterprise Architect 7.5 Versión en español

Tutorial Enterprise Architect 7.5 Versión en español Página 1 de Tutorial Enterprise Architect 7.5 Versión en español Página 2 de Índice Aspectos básicos Vistazo general. 3 Diagrama de Clases.. 4 Atributos 6 Métodos. 10 Relaciones.. 11 Configuración de Opciones

Más detalles

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO www.ubs-systems.com Teléfono: 91 3681185 UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO Unidesys Versión 2011 1 CONTENIDO 1 INTRODUCCIÓN 3 2 FUENTES DE DATOS 4 3 INSTALACIÓN DEL

Más detalles

Ingeniería del Software Arquitectura Física en 3 niveles

Ingeniería del Software Arquitectura Física en 3 niveles Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre

Más detalles

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

5.4. Manual de usuario

5.4. Manual de usuario 5.4. Manual de usuario En esta sección se procederá a explicar cada una de las posibles acciones que puede realizar un usuario, de forma que pueda utilizar todas las funcionalidades del simulador, sin

Más detalles

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA ÍNDICE CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN SQL SERVER 2008 R2...17 1.2 INSTALACIÓN DE MICROSOFT SQL SERVER 2008 R2...18 1.3 VERSIONES DE MICROSOFT SQL SERVER

Más detalles

8 SQL SERVER 2008 RA-MA

8 SQL SERVER 2008 RA-MA ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo... 17 1.1 Novedades en SQL Server 2008... 17 1.2 Instalación de Microsoft SQL Server 2008... 19 1.3 Versiones de Microsoft SQL Server

Más detalles

Manual de NetBeans y XAMPP

Manual de NetBeans y XAMPP Three Headed Monkey Manual de NetBeans y XAMPP Versión 1.0 Guillermo Montoro Delgado Raúl Nadal Burgos Juan María Ruiz Tinas Lunes, 22 de marzo de 2010 Contenido NetBeans... 2 Qué es NetBeans?... 2 Instalación

Más detalles

Herramienta CASE (Bouml)

Herramienta CASE (Bouml) Herramienta CASE (Bouml) Ingeniería de la Programación Práctica 6 1 Contenido La presentación es una traducción, con alguna pequeña aportación, del tutorial sobre Bouml que puede encontrarse en inglés

Más detalles

myappgen Usted Construye la aplicación mientras la ejecuta http://www.myappgen.com info@myappgen.com

myappgen Usted Construye la aplicación mientras la ejecuta http://www.myappgen.com info@myappgen.com myappgen Usted Construye la aplicación mientras la ejecuta http://www.myappgen.com info@myappgen.com Tutorial 1 Conexión con la Base de Datos Establecer la conexión con la base de datos no suele ser muy

Más detalles

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus Iniciando con Oracle Índice de contenido Ingresando a Oracle...1 Cambiando Su Contraseña...1 Ingresando un Comando SQL en SQL*Plus...2 Saliendo de SQL*Plus...2 Consiguiendo Ayuda...2 Creación de una Tabla...3

Más detalles

Universidad Nacional de Luján Departamento de Ciencias Básicas Programación III

Universidad Nacional de Luján Departamento de Ciencias Básicas Programación III Introducción al uso de JDBC, Swing y Firebird 2.5 en Java 6 Standard Edition Guillermo R. Cherencio gcherencio@unlu.edu.ar Implementación del patrón de diseño Model View Controller Pattern Objetivo: Implementaciónde

Más detalles

SOROLLA MODULO DE JUSTIFICANTES DEL GASTO

SOROLLA MODULO DE JUSTIFICANTES DEL GASTO MINISTERIO DE ECONOMÍA Y HACIENDA SECRETARÍA DE DE HACIENDA Y PRESUPUESTOS GENERAL DE LA SUBDIRECCIÓN GENERAL DE APLICACIONES DE CONTABILIDAD Y CONTROL SOROLLA MODULO DE JUSTIFICANTES DEL GASTO GUÍA DE

Más detalles

Tablas y Campos Nuevos

Tablas y Campos Nuevos Tablas y Campos Nuevos Maxicomercio tiene la capacidad para poder agregar tablas y campos nuevos para darle nueva funcionalidad al sistema, los cambios que realice a la estructura de la base de datos podrán

Más detalles

Sistema para el alquiler, control de películas y clientes en una videotienda

Sistema para el alquiler, control de películas y clientes en una videotienda CASO DE PRUEBA: Sistema para el alquiler, control de películas y clientes en una videotienda Documento de arquitectura Y servicios Versión Historia de Revisión Fecha Versión Descripción Responsable

Más detalles

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio Aplicateca Manual de Usuario: Ilion Factura Electrónica Espíritu de Servicio Índice 1 Introducción... 4 1.1 Qué es Ilion Factura electrónica?... 4 1.2 Requisitos del sistema... 4 1.3 Configuración del

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Oracle 12c DISEÑO Y PROGRAMACIÓN

Oracle 12c DISEÑO Y PROGRAMACIÓN Oracle 12c Se estudia el servidor de bases de datos empresarial Oracle 12c, centrándose especialmente en el punto de vista de un diseñador o programador de bases de datos, pero explicando también cómo

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Arquitectura de sistema de alta disponibilidad

Arquitectura de sistema de alta disponibilidad Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los

Más detalles

Practica 11: Conexión de Java con Bases de datos Access

Practica 11: Conexión de Java con Bases de datos Access Practica 11: Conexión de Java con Bases de datos Access En esta práctica vamos a crear una base de datos Microsoft Access y luego vamos a conectarnos desde una aplicación java haciendo uso del puente JDBC-ODBC

Más detalles

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE Java EE Ejercicio 4 EJB Sesión Sistema SGA Objetivo del Ejercicio El objetivo del ejercicio es agregar un EJB de Sesión a nuestro proyecto SGA (Sistema de Gestión de Alumnos), el cual desarrollaremos a

Más detalles

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Entidad Formadora: Plan Local De Formación Convocatoria 2010 Entidad Formadora: Enterprise Architect Comenzando Puede iniciar Enterprise Architect desde el ícono que se creó en su escritorio de Windows durante la instalación, o alternativamente: 1. Abrir el menú

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

WINDOWS 2008 7: COPIAS DE SEGURIDAD

WINDOWS 2008 7: COPIAS DE SEGURIDAD 1.- INTRODUCCION: WINDOWS 2008 7: COPIAS DE SEGURIDAD Las copias de seguridad son un elemento fundamental para que el trabajo que realizamos se pueda proteger de aquellos problemas o desastres que pueden

Más detalles

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx En este documento explicaré brevemente cómo construir un servicio web con Java Axis2 y cómo invocarlo desde un cliente

Más detalles

abacformacio@abacformacio.com 1

abacformacio@abacformacio.com 1 Cu Oracle 10gg Estudia el servidor de bases de datos Oracle 10g desde el punto de vista de un diseñador y programador de bases de datos, prestando atención a los objetos que puede crear, como tablas, consultas

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 8. Elementos Básicos 1.- Ejemplo Introductorio. 2.- Dominios. 3.- Relaciones. 4.- Bases de Datos Relacionales. (Capítulo 11 del Date) EJEMPLO

Más detalles

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access) Administración de la producción Sesión 10: Gestor de Base de Datos (Access) Contextualización Microsoft Access es un sistema de gestión de bases de datos, creado para uso personal y de pequeñas organizaciones,

Más detalles

Restricciones de Integridad

Restricciones de Integridad Restricciones de Integridad Amparo López Gaona México, D.F. Semestre 2000-I Restricciones de Integridad Las principales restricciones de integridad que pueden indicarse son: La clave primaria. Claves candidatas.

Más detalles

MANUAL DE AYUDA MÓDULOS 2011 MACOS

MANUAL DE AYUDA MÓDULOS 2011 MACOS MANUAL DE AYUDA MÓDULOS 2011 MACOS Agencia Tributaria Centro de Atención Telefónica Departamento de INFORMÁTICA TRIBUTARIA ÍNDICE MÓDULOS 2011 INTRODUCCIÓN...3 Requisitos previos. Máquina Virtual de Java...

Más detalles

Microsoft Access proporciona dos métodos para crear una Base de datos.

Microsoft Access proporciona dos métodos para crear una Base de datos. Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las

Más detalles

Dossier de prácticas

Dossier de prácticas Dossier de prácticas Intranet / Extranet Màster d Enginyeria del Software Desenvolupament d aplicacions sobre Internet Fundació Politècnica de Catalunya Jaume Moral Ros Albert Obiols Vives 1 Dossier de

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 9. Reglas de Integridad 1.- Introducción. 2.- Claves Primarias. 3.- Regla de Integridad de Entidades. 4.- Claves Ajenas. 5.- Regla de Integridad

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

JDBC. Una mini-introducci. introducción

JDBC. Una mini-introducci. introducción JDBC Una mini-introducci introducción Introducción JDBC (Java DataBase Connectivity) Protocolo para utilizar bases de datos relacionales desde Java Se basa en la utilización n de drivers que implementan

Más detalles

Manual de usuario para la parametrización de la integración Openbravo-Sugar

Manual de usuario para la parametrización de la integración Openbravo-Sugar Manual de usuario para la parametrización de la integración Openbravo-Sugar Fichero: Manual usuario - Integración Openbravo- Sugar - Spanish Versión: 1.0 Sevilla, 3 de febrero de 2010 Histórico de cambios

Más detalles

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Descarga Automática Manual de Usuario Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Versión 5.2 Fecha: 2008-10-15 Ref : MU_DescargaAutomática.doc ÍNDICE 1 INTRODUCCIÓN...

Más detalles

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

Más detalles

Acceso a bases de datos MySQL con PHP

Acceso a bases de datos MySQL con PHP GESTIÓN Y ADMINISTRACIÓN WEB Acceso a bases de datos MySQL con PHP Ing. CIP Fabián Silva Alvarado fsilvasys@hotmail.com DEFINICIÓN DE BASE DE DATOS Base de Datos es un conjunto de datos relacionados entre

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles

GENERACIÓN DE ANTICIPOS DE CRÉDITO

GENERACIÓN DE ANTICIPOS DE CRÉDITO GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos

Más detalles

Repaso de Conceptos Básicos de Bases de Datos

Repaso de Conceptos Básicos de Bases de Datos escuela técnica superior de ingeniería informática Repaso de Conceptos Básicos de Bases de Datos Departamento de Lenguajes Grupo de Ingeniería del Software Septiembre 2004 Definición Una base de datos

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario 14 CORREO SEGURO. Hay aplicaciones de correo que permiten enviar y recibir correos cifrados y firmados digitalmente utilizando criptografía. Estas operaciones garantizan el intercambio seguro de información,

Más detalles

Sophos Anti-Virus para Mac OS X, versión 4.9 guía de inicio. Para Macs en red con Mac OS X

Sophos Anti-Virus para Mac OS X, versión 4.9 guía de inicio. Para Macs en red con Mac OS X Sophos Anti-Virus para Mac OS X, versión 4.9 guía de inicio Para Macs en red con Mac OS X Edición: junio de 2007 Acerca de esta guía Si tiene un servidor Windows, le recomendamos que utilice Sophos Enterprise

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

MANUALITO MS-SQL SERVER

MANUALITO MS-SQL SERVER MANUALITO MS-SQL SERVER Contenido 1. Crear Store Procedures en MS SQL Server... 1 2. Crear Triggers en MS SQL Server... 5 3. Crear Vistas en MS SQL Server... 9 1. Crear Store Procedures en MS SQL Server

Más detalles

Manual de rol gestor de GAV para moodle 2.5

Manual de rol gestor de GAV para moodle 2.5 Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente

Más detalles

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS Dámaso López Aragón Introducción En la actualidad, la orientación a objetos es una nueva forma de comprender los problemas y modelar el negocio de una empresa,

Más detalles

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013 - MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD Rev. 01- FEBRERO 2013 Software de diagnóstico de la seguridad de la información y autoimplantación

Más detalles

Manual De Instalación MySQl 5.1 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL 5.1.40

Manual De Instalación MySQl 5.1 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL 5.1.40 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL 5.1.40 Página 1 de 15 1.- Ejecutamos el fichero mysql-essential-5.1.40-win32. Espera unos minutos mientras se cargan los archivos necesarios para la instalación

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

Data Source. Lic. Esteban Calabria 2007

Data Source. Lic. Esteban Calabria 2007 Data Source Lic. Esteban Calabria 2007 Layer Data Source Los sistemas raramente viven aislados del mundo. La responsabilidad de la capa Data Source es manejar la comunicación del nuestro sistema con otros.

Más detalles

Instrucciones para el despliegue de EJBs

Instrucciones para el despliegue de EJBs Apuntes de J2EE Instrucciones para el despliegue de EJBs Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

CONSULTAS BASICAS EN SQL SERVER

CONSULTAS BASICAS EN SQL SERVER CONSULTAS BASICAS EN SQL SERVER CONSULTAS DE SELECCION Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta

Más detalles

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases PHP y MySQL Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases Herencia de Objetos La herencia permite crear muchas clases que son similares entre si, sin tener

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓN DE TRANSFERENCIAS GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base

Más detalles

Programación páginas web. Servidor (PHP)

Programación páginas web. Servidor (PHP) Programación páginas web. Servidor (PHP) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte servidor con la tecnología PHP y el servidor de bases de datos MySQL.

Más detalles