Persistencia con Hibernate I i ngen í er a d d e l l a P P i rogramac ó ión Práctica /2010
|
|
- Francisca Barbero Cáceres
- hace 8 años
- Vistas:
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 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 detallesGuí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 detallesCurso 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 detallesUnidad 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 detallesRUEDA 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 detallesEjercicios - 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 detallesConsultas 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 detallesPrá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 detallesEXAMEN 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 detallesEdició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 detallesPatrones 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 detallesCONSULTAS 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 detallesProgramació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 detallesSQL (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 detallesCapí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 detallesBase 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 detallesTrabajos 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 detallesT12 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 detallesSMS 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 detallesINTRODUCCION. 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 detallesPHPMYADMIN 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 detallesGESTIÓ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 detallesJava 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 detallesMarcos 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 detallesCOMPROBACIONES 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 detallesCURSO 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 detallesProgramació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 detallesINSTALACIÓ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 detallesBASE 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 detalles10. 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 detallesKaldeera 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 detallesTutorial 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 detallesDescarga, 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 detallesAviso 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 detallesTutorial 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 detallesUNIDESYS 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 detallesIngenierí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
- 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 detalles5.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 detalles8 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 detalles8 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 detallesManual 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 detallesHerramienta 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 detallesmyappgen 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 detallesIniciando 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 detallesUniversidad 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 detallesSOROLLA 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 detallesTablas 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 detallesSistema 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 detallesAplicateca. 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 detallesSOLUCION 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 detallesOracle 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 detallesModelo 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 detallesArquitectura 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 detallesPractica 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 detallesEjercicio 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 detallesCOMANDOS 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 detallesInternet 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 detallesEntidad 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 detallesNotas 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 detallesWINDOWS 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 detallesCREAR 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 detallesabacformacio@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 detallesFICHEROS 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 detallesAdministració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 detallesRestricciones 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 detallesMANUAL 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 detallesMicrosoft 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 detallesDossier 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 detallesFICHEROS 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 detalles2.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 detallesRESUMEN 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 detallesJDBC. 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 detallesManual 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 detallesDescarga 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 detallesUNIDAD 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 detallesAcceso 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 detallesUniversidad 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 detallesGENERACIÓ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 detallesRepaso 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 detallesAcronis 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 detallesDepartamento 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 detallesSophos 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 detallesAGREGAR 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 detallesMANUALITO 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 detallesManual 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 detallesBASE 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 Software de diagnóstico de la seguridad de la información y autoimplantación
Más detallesManual 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 detallesModulo 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 detallesArquitectura 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 detallesData 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 detallesInstrucciones 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 detallesCreació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 detallesCONSULTAS 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 detallesPHP 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 detallesDesarrollo 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 detallesGENERACIÓ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 detallesProgramació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