Está en la página 1de 26

SOLUCIONES WEB Y APLICACIONES DISTRIBUIDAS

DOCENTE:
ING. PREZ QUIROZ, Hugo Alejandro.

INTEGRANTES:

VELEZMORO TIRADO, Jos.

CAJAMARCA NOVIEMBRE DEL 2014.

SOLWEB 1
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

JAVASERVER FACES

1. DEFINICION:

JavaServer Faces (JSF) es una tecnologa y framework para


aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de
usuario en aplicaciones JavaEE. JSF usa JavaServerPages (JSP) como la
tecnologa que permite hacer el despliegue de las pginas, pero tambin se
puede acomodar a otras tecnologas como XUL.

JSF incluye:

Un conjunto de APIs para representar componentes de una interfaz de


usuario y administrar su estado, manejar eventos, validar entrada, definir
un esquema de navegacin de las pginas y dar soporte para
internacionalizacin y accesibilidad.

Un conjunto por defecto de componentes para la interfaz de usuario.

Dos bibliotecas de etiquetas personalizadas para JavaServerPages que


permiten expresar una interfaz JavaServer Faces dentro de una pgina JSP.

Un modelo de eventos en el lado del servidor.

Administracin de estados.

Beans administrados.

2. PORQU UTILIZAR JSF EN NUESTROS PROYECTOS

JSF nos permite desarrollar rpidamente aplicaciones de negocio dinmicas


en las que toda la lgica de negocio se implementa en java, o es llamada
desde java, creando pginas para las vistas muy sencillas (salvo que
introduzcamos mucha maquetacin HTML o Javascript)

JSF nos ofrece una serie de ventajas:

Permite generar contenido dinmico para web


Permite reutilizar condigo

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Separa lgica de vista (MVC)


Soporta Enterprise EJB (desarrollo rpido de aplicaciones distribuidas,
tradicionales, seguras y porttiles basadas en la tecnologa Java.)

3. OBJETIVOS:

Definir un conjunto simple de clases base de Java para componentes


de la interfaz de usuario, estado de los componentes y eventos de
entrada. Estas clases tratarn los aspectos del ciclo de vida de la
interfaz de usuario, controlando el estado de un componente durante
el ciclo de vida de su pgina.
Proporcionar un conjunto de componentes para la interfaz de usuario,
incluyendo los elementos estndares de HTML para representar un
formulario. Estos componentes se obtendrn de un conjunto bsico de
clases base que se pueden utilizar para definir componentes nuevos.
Proporcionar un modelo de JavaBeans para enviar eventos desde los
controles de la interfaz de usuario del lado del cliente a la aplicacin
del servidor.
Definir APIs para la validacin de entrada, incluyendo soporte para la
validacin en el lado del cliente.
Especificar un modelo para la internacionalizacin y localizacin de la
interfaz de usuario.
Automatizar la generacin de salidas apropiadas para el objetivo del
cliente, teniendo en cuenta todos los datos de configuracin
disponibles del cliente, como versin del navegador.

4. C MOFUNCIONA JSF:

La principal funcin del controlador JSF es asociar a las pantallas, clases java que
recogen la informacin introducida y que disponen de mtodos que responden a las
acciones del usuario. JSF nos resuelve de manera muy sencilla y automtica muchas
tareas:

Mostrar datos al usuario en cajas de texto y tablas.

Recoger los datos introducidos por el usuario en los campos del formulario.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Controlar el estado de los controles del formulario segn el estado de la


aplicacin, activando, ocultando o aadiendo y eliminando controles y dems
elementos

Realizando validaciones y conversiones de los datos introducidos por el


usuario

Rellenando campos, listas, combos y otros elementos a medida que el


usuario va interactuando con la pantalla

Controlando los eventos que ocurren en los controles (pulsaciones de teclas,


botones y movimientos del ratn).

Las aplicaciones JSF estn formadas por los siguientes elementos principales:

Pginas JSP que incluyen los formularios JSF. Estas pginas generarn las
vistas de la aplicacin

Beans java que se conectan con los formularios JSF

Clases java para la lgica de negocio y utilidades.

Ficheros de configuracin, componentes a medidad y otros elementos del


framework.

Resto de recursos de la aplicacin web: recursos esttios, javascript y otros


elementos.

5. LOS BACKBEANS

A las clases java que se asocian a los formularios JSF se les denomina
backendbeans ya que son los beans (clases java) que estn detras del
formulario. Estos beans se referencian en el fichero de configuracin de JSF
en el apartado de managedbeans, ya que son beans gestionados por el
controlador JSF. este se encarga de su construccin y destruccin automticas
cuando es necesario.

SPRING

1. INTRODUCCION:
Es un framework de cdigo abierto de desarrollo de aplicaciones para
la plataforma Java. La primera versin fue escrita por RodJonhson, quien lo lanz
primero con la publicacin de su libro ExpertOne-on-One Java EE Design and

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Development(WroxPress, octubre 2002). Tambin hay una versin para la


plataforma .NET, Spring .NET.

Spring es un framework de aplicaciones Java/J2EE desarrollado usando licencia


de OpenSource.
Se basa en una configuracin a base de javabeans bastante simple. Es potente
en cuanto a la gestin del ciclo de vida de los componentes y fcilmente
ampliable. Es interesante el uso de programacin orientada a aspectos (IoC).
Tiene plantillas que permiten un ms fcil uso de Hibernate, iBatis, JDBC.

Que proporciona? Spring proporciona:

Una potente gestin de configuracin basada en JavaBeans, aplicando


los
principios de Inversin de Control (IoC). Esto hace que la configuracin
de
aplicaciones sea rpida y sencilla. Ya no es necesario tener singletons
ni
ficheros de configuracin, una aproximacin consistente y elegante.
Estas
definiciones de beans se realizan en lo que se llama el contexto de
aplicacin.
Una capa genrica de abstraccin para la gestin de transacciones,
permitiendo gestores de transaccin aadibles (pluggables), y haciendo
sencilla la demarcacin de transacciones sin tratarlas a bajo nivel. Se
incluyen
estrategias genricas para JTA y un nico JDBC DataSource. En
contraste con
el JTA simple o EJB CMT, el soporte de transacciones de Spring no est
atado
a entornos J2EE.
Una capa de abstraccin JDBC que ofrece una significativa jerarqua de
excepciones (evitando la necesidad de obtener de SQLException los
cdigos

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

que cada gestor de base de datos asigna a los errores), simplifica el


manejo
de errores, y reduce considerablemente la cantidad de cdigo
necesario.
Integracin con Hibernate, JDO e iBatis SQL Maps en trminos de
soporte a
implementaciones DAO y estrategias con transacciones. Especial
soporte a
Hibernate aadiendo convenientes caractersticas de IoC, y
solucionando
muchos de los comunes problemas de integracin de Hibernate. Todo
ello
cumpliendo con las transacciones genricas de Spring y la jerarqua de
excepciones DAO.

2. INYECCIN DE DEPENDENCIAS

El objetivo es lograr un bajo acoplamiento entre los objetos de nuestra


aplicacin. Con este patrn de diseo, los objetos no crean o buscan sus
dependencias (objetos con los cuales colabora) sino que stas son dadas al
objeto. El contenedor (la entidad que coordina cada objeto en el sistema) es el
encargado de realizar este trabajo al momento de instanciar el objeto. Se
invierte la responsabilidad en cuanto a la manera en que un objeto obtiene la
referencia a otro objeto.

De esta manera, los objetos conocen sus dependencias por su interfaz. As la


dependencia puede ser intercambiada por distintas implementaciones a travs
del contenedor. En resumen, programaremos orientado a interfaces e
inyectaremos las implementaciones a travs del contenedor.

3. PROGRAMACIN ORIENTADA A ASPECTOS

Se trata de un paradigma de programacin que intenta separar las


funcionalidades secundarias de la lgica de negocios. En ingls denominan a
estas funcionalidades cross-cuttingconcerns algo que se traducira como
preocupaciones transversales. Por ejemplo los loggers, la seguridad, el manejo
de transacciones, etc., son funcionalidades que atraviesan nuestro programa en
varias abstracciones de ste. Por lo tanto corremos el riesgo de caer en la
repeticin de cdigo y el acoplamiento entre nuestra lgica de negocios y la
implementacin de los cross-cuttingconcerns.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

La AOP (Aspect-OrientedProgramming) busca modularizar estos servicios y


aplicarlos de manera declarativa a los componentes que deban afectar.

4. MODULOS DE SPRING:

4.1 Qu es Ioc?

Spring se basa en IoC. IoC es lo que nosotros conocemos como el Principio de


Inversin de Dependencia, Inversion of Control" (IoC) o patrn Hollywood ("No
nos llames, nosotros le llamaremos") consiste en:
Un Contenedor que maneja objetos por ti.
El contenedor generalmente controla la creacin de estos objetos. Por
decirlo de alguna manera, el contenedor hace los new de las clases
java para que no los realices t.
El contenedor resuelve dependencias entre los objetos que contiene.

Estos puntos son suficientes y necesarios para poder hablar de una definicin
bsica de IoC. Spring proporciona un contenedor que maneja todo lo que se
hace con los objetos del IoC. Debido a la naturaleza del IoC, el contenedor

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

ms o menos ha definido el ciclo de vida de los objetos. Y, finalmente, el


contenedor resuelve las dependencias entre los servicios que l controla.

El diagrama muestra los mdulos con los que cuenta Spring (hasta la versin
2.5). En su ncleo (Core) se encuentra el BeanFactory el contenedor
fundamental de Spring y quien se encarga de la inyeccin de dependencias.
El contenedor ApplicationContext se basa en BeanFactory y extiende su
funcionalidad con soporte para i18n, eventos de ciclo de vida, validacin y
mejor integracin con AOP.

AOP provee la implementacin de AOP, permitindonos desarrollar


interceptores de mtodo y puntos de corte para desacoplar el cdigo de las
funcionalidades transversales.

DAO - Provee una capa de abstraccin sobre JDBC, abstrae el cdigo de


acceso a datos de una manera simple y limpia. Tiene una capa de expeciones
sobre los mensajes de error provistos por cada servidor especfico de base de
datos. Adems cuenta con manejo de transacciones a travs de AOP.

ORM Provee la integracin para las distintas APIs de mapeo objeto-


relacional incluyendo JPA, JDO, Hibernate e iBatis.

JEE Provee integracin con aplicaciones Java Enterprise Edition as como


servicios JMX, JMS, EJB, etc.

Web Mdulo que aporta clases especiales orientadas al desarrollo web e


integracin con tecnologas como Struts y JSF. Cuenta con el paquete Spring
MVC, una implementacin del conocido patrn de diseo aplicando los
principios de Spring.

JPA (J AVA P ERSISTENCE API)

1. INTRODUCCIN
Java Persistence API (JPA) proporciona un modelo de persistencia basado en
POJO's para mapear bases de datos relacionales en Java. El Java Persistence
API fue desarrollado por el grupo de expertos de EJB 3.0 como parte de JSR
220, aunque su uso no se limita a los componentes software EJB. Tambin
puede utilizarse directamente en aplicaciones web y aplicaciones clientes;
incluso fuera de la plataforma Java EE, por ejemplo, en aplicaciones Java SE.
En su definicin, se han combinado ideas y conceptos de los principales
frameworks de persistencia como Hibernate, Toplink y JDO, y de las versiones
anteriores de EJB. Todos estos cuentan actualmente con una implementacin

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

JPA. El mapeo objeto/relacional, es decir, la relacin entre entidades Java y


tablas de la base de datos, se realiza mediante anotaciones en las propias
clases de entidad, por lo que no se requieren ficheros descriptores XML.
Tambin pueden definirse transacciones como anotaciones JPA. Java
Persistence API consta de tres reas:

El Java Persistence API


El lenguaje de query
El mapeo de los metadatos objeto/relacional

2. CARACTERSTICAS
Una entidad es un objeto de dominio de persistencia. Normalmente, una
entidad representa una tabla en el modelo de datos relacional y cada
instancia de esta entidad corresponde a un registro en esa tabla.

El estado de persistencia de una entidad se representa a travs de campos


persistentes o propiedades persistentes. Estos campos o propiedades usan
anotaciones para el mapeo de estos objetos en el modelo de base de datos.

El estado persistente de una entidad puede ser accesible a travs de


variables de instancia a la entidad o bien a travs de las propiedades de
estilo de JavaBean. Lo campos o propiedades pueden tener asociados los
siguientes tipos Java:

Tipos primitivos de Java


java.lang.String
Otro tipo de objeto serializable, incluyendo:
o Wrappers de tipos primitivos en Java
o java.math.BigInteger
o java.math.BigDecimal
o java.util.Date
o java.util.Calendar
o java.sql.Date
o java.sql.Time
o java.sql.TimeStamp
o User-definedserializabletypes
o byte
o Byte
o char
o Character
o Tipos enumerados
o Otras entidades y/o colecciones de entidades

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Las entidades podrn utilizar campos persistentes o propiedades. Si las


anotaciones de mapeo se aplican a las instancias de las entidades, la entidad
utiliza campos persistentes, En cambio, si se aplican a los mtodos getters de
la entidad, se utilizarn propiedades persistentes. Hay que tener en cuenta
que no es posible aplicar anotaciones tanto a campos como a propiedades en
una misma entidad.

3. CAMPOS PERSISTENTES
Si la entidad utiliza campos persistentes, los accesos se realizan en tiempo de
ejecucin. Aquellos campos que no tienen anotaciones del tipo
javax.persistence.Transient o no han sido marcados como Java transitorio
sern persistentes para el almacenamiento de datos. Las anotaciones de
mapeo objeto/relacin deben aplicarse a los atributos de la instancia.

4. PROPIEDADES PERSISTENTES
Si la entidad utiliza propiedades persistentes, la entidad debe seguir el
mtodo de los convenios de componentes JavaBeans. Las propiedades de
JavaBean usan mtodos getters y setters en cuyo nombre va incluido el
atributo de la clase al cual hacen referencia. Si el atributo es booleano podr
utilizarse isProperty en lugar de getProperty. Por ejemplo, si una entidad
Customer, utiliza las propiedades de persistencia, supongamos que tiene un
atributo privado denominado firsName, la clase definir los mtodos
getFirstName y setFirstName para recuperar y establecer el valor de la
variable firstName.

Los mtodos para la firma de un valor nico de propiedades son los


siguientes.

Tipo getProperty ()
voidsetProperty (Tipo tipo)

Tanto los campos persistentes como las propiedades deben utilizar las
interfaces de Java independientemente de que la entidad utilice campos o
propiedades. Las colecciones posibles son:

java.util.Collection
java.util.Set
java.util.List
java.util.Map

Si la entidad utiliza campos persistentes, el tipo en el mtodo anterior debe


ser uno de estos tipos de collection. Las variables genricas de estos tipos
tambin pueden ser utilizadas. Por ejemplo, si la entidad Customer tiene un

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

atributo que contiene un conjunto de nmeros de tlfno, tendr que tener los
siguientes mtodos:

Set<PhoneNumber>getPhoneNumbers() {}
Void setPhoneNumbers(Set<PhoneNumber>) {}

Las anotaciones del mapeo objeto/relacional deben aplicarse a los mtodos


getter. El mapeo de las anotaciones no puede aplicarse a los campos o
propiedades anotadas como @Transient o marcadas como transient.

5. RELACIONES MLTIPLES DE LA ENTIDAD


Hay cuatro tipos de relaciones: uno a uno, uno a muchos, muchos a uno, y
muchos a muchos.

Uno a uno:

Cada entidad se relaciona con una sola instancia de otra entidad. Por
ejemplo, al modelo fsico de almacn en el que cada almacn contiene un
nico artilugio, StorageBin y Widget, deberan tener una relacin uno a uno.
Las relaciones uno a uno utilizan anotaciones javax.persistence.OneToOne.

Uno a muchos:

Una entidad, puede estar relacionada con varias instancias de otras


entidades. Una orden de venta (Order), por ejemplo, puede tener varias
partidas (LineItem). En la aplicacin de la orden, La orden (Order) tendr una
relacin uno a muchos con las partidas (LineItem). Las relaciones uno a
muchos utilizan anotaciones javax.persistence.OneToMany en los campos o
propiedades persistentes.

Muchos a uno:

Mltiples instancias de una entidad pueden estar relacionadas con una sola
instancia de otra entidad. Esta multiplicidad es lo contrario a la relacin uno a
muchos. En el ejemplo anterior, desde la perspectiva de la orden de venta
(LineItem) la relacin con la Orden (Order) es de muchos a uno. Las
relaciones muchos a uno utilizan anotaciones javax.persistence.ManyToOne
en los campos o propiedades persistentes.

Muchos a muchos:

En este caso varias instancias de una entidad pueden relacionarse con


mltiples instancias de otras entidades. Por ejemplo, cada curso de una

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

universidad tiene muchos estudiantes, y cada estudiante puede tener varios


cursos. Por lo tanto, en una solicitud de inscripcin, los cursos y los
estudiantes tendran una relacin muchos a muchos. Este tipo de relacin
utiliza anotaciones javax.persistence.ManyToMany en los campos o
propiedades persistentes.

6. INSTANCIAS DE ENTIDADES PERSISTENTES

Una nueva instancia se gestiona y se actualiza invocando al mtodo persist, o


por una operacin de actualizacin en cascada llamada desde una entidad
relacionada a travs de las anotaciones cascade=PERSIST o cascade=ALL.
Esto significa que el dato de la entidad se almacena en base de datos cuando
la transaccin asociada con la operacin persist se completa. Si la entidad ya
se encuentra actualizada, la operacin persist se ignora, aunque la operacin
persist se ejecutar en cascada con las entidades relacionadas. Si se llama al
mtodo persist o al mtodo removed, se convierte en una instancia
gestionada. Si la entidad se separa, el mtodo persist elevar una excepcin
IllegalArgumentException, o la realizacin del commit fallar.

@PersistenceContext
EntityManagerem;
...
publicLineItemcreateLineItem(Order order, Product product,
int quantity) {
LineItem li = new LineItem(order, product,quantity);
order.getLineItems().add(li);
em.persist(li);
return li;
}

La operacin persist se propaga a todas las entidades relacionadas con la


entidad que tienen el elemento de cascada configurado con ALL o PERSIST

@OneToMany(cascade=ALL, mappedBy="order")
public Collection<LineItem>getLineItems() {
returnlineItems;
}

7. UNIDADES DE PERSISTENCIA
La unidad de persistencia define un conjunto de todas las entidades (clases)
que son gestionadas por la instancia del EntityManager en una aplicacin.
Este conjunto de clases de entidad representa los datos contenidos en un
nico almacn de datos.

Las unidades de persistencia se definen en el fichero de configuracin


persistence.xml. El fichero JAR cuyo directorio META-INF contiene

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

persistence.xml se llama raz de la unidad de persistencia. El mbito de la


unidad de persistencia se determina por la raz de la unidad de persistencia.

Cada unidad de persistencia debe ser identificada con un nombre nico en el


mbito de la unidad de persistencia.

Las unidades de persistencia pueden empaquetarse como parte de un WAR o


un fichero EJB JAR, o pueden empaquetarse como un archivo JAR que pueda
ser incluido en un fichero WAR o EAR.

El fichero persistence.xml

El fichero persistence.xml define una o ms unidades de persistencia:

Este archivo define una unidad de persistencia llamada OrderManagement, la


cual utiliza jdbc / MyOrderDB. El fichero JAR y los elementos de la clase
especifican las clases de persistencia: clases de entidad, clases embebidas y
superclases mapeadas. El elemento jar-file especifica los ficheros JAR en los
que se encuentran las clases persistentes, mientras que el elemento class
indica el nombre de esas clases. El elemento jta-data-source especifica el
nombre global JNDI de la fuente de datos que utiliza el contenedor.

8. INTERACTA

H IBERNATE

La versin 3.2.0 Hibernate desarrolla la especificacin JPA, con lo que ahora


es posible desarrollar una capa de acceso a datos compatible con los
estndares de Java en hibernate, y desplegarla en cualquier servidor de
aplicaciones que soporte las especificaciones JEE5.

TOPLINK

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

TopLink es una implementacin del EJB 3.0 JPA (Java Persistence API). Es una
versin limitada del propietario del producto, por ejemplo, TopLink no
proporciona sincronizacin de la cach entre la agrupacin de las
aplicaciones, la poltica de validaciones y la cach de consultas.

EJB

JPA se defini como parte de la especificacin EJB 3.0 que es a su vez parte
de la plataforma Java EE 5.No se utiliza un contenedor de EJB's, ni tampoco
un servidor de aplicaciones Java EE con el fin de ejecutar aplicaciones que
utilizan persistencia

9. CONCLUSIONES
Open JPA consisten en que objetos transitorios pueden ser almacenados en
forma permanente en una base de datos relacional.

Adems, Open JPA pretende hacer ms eficaz el proceso de desarrollo,


permitiendo a los desarrolladores enfocarse a resolver los problemas de
negocios a los que se enfrentan, en lugar de ocupar su tiempo con el cdigo
de infraestructura. El Java Persistence API se basa en las mejores ideas de
tecnologas como la persistencia Hibernate, TopLink, y JDO. Los clientes ya no
tienen que enfrentarse a las incompatibilidades de modelos no estndar.
Adems, la Java Persistence API se puede usar tanto en entornos Java SE,
como en Java EE.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

HIBERNATE

1. INTRODUCCION

Hibernate es una herramienta de Mapeo objeto-relacional (ORM) para la


plataforma Java (y disponible tambin para .Net con el nombre de
NHibernate) que facilita el mapeo de atributos entre una base de datos
relacional tradicional y el modelo de objetos de una aplicacin, mediante
archivos declarativos (XML) o anotaciones en los beans de las entidades que
permiten establecer estas relaciones.

Hibernate es software libre, distribuido bajo los trminos de la licencia GNU


LGPL.

2. ARQUITECTURA HIBERNATE

En la siguiente Figura muestra los roles de las interfaces Hibernate ms


importantes en las capas de persistencia y de negocio de una aplicacin J2EE.
La capa de negocio est situada sobre la capa de persistencia, ya que la capa
de negocio acta como un cliente de la capa de persistencia.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Las interfaces mostradas pueden clasificarse como sigue:

Interfaces llamadas por la aplicacin para realizar operaciones bsicas


(inserciones, borrados, consultas,...): Session, Transaction, y Query.
Interfaces llamadas por el cdigo de la infraestructura de la aplicacin
para configurar Hibernate. La ms importante es la clase Configuration.
Interfaces callback que permiten a la aplicacin reaccionar ante
determinados eventos que ocurren dentro de la aplicacin, tales como
Interceptor, Lifecycle, y Validatable.
Interfaces que permiten extender las funcionalidades de mapeado de
Hibernate, como por ejemplo UserType, CompositeUserType, e
IdentifierGenerator.

Adems, Hibernate hace uso de APIs de Java, tales como JDBC, JTA (Java
Transaction Api) y JNDI (Java NamingDirectory Interface).

3. SESSION

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Es una de las interfaces primarias en cualquier aplicacin Hibernate. Una


instancia de Session es "poco pesada" y su creacin y destruccin es muy
"barata".

Esto es importante, ya que nuestra aplicacin necesitar crear y destruir


sesiones todo el tiempo, quiz en cada peticin. Puede ser til pensar en una
sesin como en una cach o coleccin de objetos cargados (a o desde una
base de datos) relacionados con una nica unidad de trabajo. Hibernate
puede detectar cambios en los objetos pertenecientes a una unidad de
trabajo.

Es la que mantiene las conversaciones entre la aplicacin y la base de datos.

Session session = sessionFactory.openSession();

SESSION FACTORY
Permite obtener instancias Session. Tpicamente hay una nica
SessionFactory para toda la aplicacin, creada durante la inicializacin de la
misma. Sin embargo, si la aplicacin accede a varias bases de datos se
necesitar una SessionFactory por cada base de datos.

Un objeto Configuration es capaz de crear una SessionFactory ya que tiene


tota la informacin necesaria.

SessionFactorysessionFactory = conf.buildSessionFactory();

4. CONFIGURATION
Se utiliza para configurar y "arrancar" Hibernate. La aplicacin utiliza una
instancia de Configuration para especificar la ubicacin de los documentos
que indican el mapeado de los objetos y propiedades especficas de
Hibernate, y a continuacin crea la SessionFactory.

Configuration conf = new Configuration();

conf.addClass(escuela.beans.Categoria.class);

Tambin es el encargado de procesar la informacin correspondiente a los


aparejamientos. Es el encargado de leerse y verificar los archivos de
emparejamiento nombreDeClasse.hbm.xml.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

QUERY
Permite realizar peticiones a la base de datos y controla cmo se ejecuta
dicha peticin (query). Las peticiones se escriben en HQL o en el dialecto
SQL nativo de la base de datos que estemos utilizando. Una instancia
Query se utiliza para enlazar los parmetros de la peticin, limitar el
nmero de resultados devueltos por la peticin, y para ejecutar dicha
peticin.

Un elemento fundamental y muy importante en la arquitectura Hibernate


es la nocin de Type. Un objeto TypeHibernate hace corresponder un tipo
Java con un tipo de una columna de la base de datos. Todas las
propiedades persistentes de las clases persistentes, incluyendo las
asociaciones, tienen un tipo Hibernate correspondiente. Este diseo hace
que Hibernate sea altamente flexible y extendible. Incluso se permiten
tipos definidos por el usuario (interfaz UserType y CompositeUserType).

4.1 C ONFIGURACIN BSICA


Para utilizar Hibernate en una aplicacin, es necesario conocer cmo
configurarlo. Hibernate puede configurarse y ejecutarse en la mayora de
aplicaciones Java y entornos de desarrollo. Generalmente, Hibernate se utiliza
en aplicaciones cliente/servidor de dos y tres capas, desplegndose
Hibernate nicamente en el servidor. Las aplicaciones cliente normalmente
utilizan un navegador web, pero las aplicaciones swing y AWT tambin son
usuales. Aunque solamente vamos a ver cmo configurar Hibernate en un
entorno no gestionado, es importante comprender la diferencia entre la
configuracin de Hibernate para entornosgestionados y no gestionados:

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Entornogestionado: Los pools de recursos tales como conexiones a la


base de datos permiten establecer los lmites de las transacciones y la
seguridad se debe especificar de forma declarativa, es decir, en sus
metadatos. Un servidor de aplicaciones J2EE, tal como JBoss, Bea
WebLogic o IBM WebSphere implementan un entorno gestionado para
Java.
Entorno no gestionado: Proporciona una gestin bsica de la
concurrencia a travs de un pooling de threads. Un contenedor de
servlets, como Tomcat proporciona un entorno de servidor no gestionado
para aplicaciones web Java. Una aplicacin stand-alone tambin se
considera como no gestionada. Los entornos no gestionados no
proporcionan infraestructura para transacciones automticas, gestin de
recursos, o seguridad. La propia aplicacin es la que gestiona las
conexiones con la base de datos y establece los lmites de las
transacciones.

Tanto en un entorno gestionado como en uno no gestionado, lo primero que


debemos hacer es iniciar Hibernate. Para hacer esto debemos crear una
SessionFactory desde la clase Configuration.

5. ESPECIFICACIN DE OPCIONES DE CONFIGURACIN


(CONFIGURATION)
Una instancia de org.hibernate.cfg.Configuration representa un conjunto
completo de correspondencias entre los tipos Java de una aplicacin y los
tipos de una base de datos SQL, adems de contener un conjunto de
propiedades de configuracin. Una lista de las posibles propiedades de
configuracin y su explicacin la podemos consultar en el manual de
referencia de Hibernate incluido en la distribucin (directorio
doc\reference\en\pdf). Para especificar las opciones de configuracin, se
pueden utilizar cualquiera de las siguientes formas:

Pasar una instancia de java.util.Properties a


Configuration.setProperties().
Establecer las propiedades del sistema mediante java-
Dproperty=value.
Situar un fichero denominado hibernate.properties en el classpath.
Incluir elementos <property> en el fichero hibernate.cfg.xml en el
classpath

Las dos primeras opciones no se suelen utilizar, excepto para pruebas rpidas
y prototipos. La mayora de las aplicaciones requieren un fichero de
configuracin esttico. Las dos ltimas opciones sirven para lo mismo:

6. C REACIN DE UNA SESSIONFACTORY

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

La forma habitual de inicializar Hibernate es creando un objeto


SessionFactory a partir de un objeto Configuration()

Un objeto Configuration() es una representacin objetual del fichero de


configuracin de Hibernate, que utiliza las anotaciones definidas en las clases
persistentes para obtener los mappings objeto/relacional.

Cuando se invoca el mtodo configure sin argumentos, Hibernate busca un fichero


con nombre hibernate.cfg.xml en el CLASSPATH de la aplicacin.

Existe otra versin de configure que permite especificar otro nombre de


fichero.

La inicializacin del objeto SessionFactory es un proceso costoso, que suele


hacerse slo una vez al comienzo de la aplicacin.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Normalmente se utiliza una clase, HibernateUtil, para implementar la


instancia nica de este objeto.

En un bloque esttico se inicializa la instancia de SessionFactory que


utilizar la aplicacin
El mtodo getSessionFactory devuelve siempre la misma instancia de
la clase SessionFactory
El mtodo shutdown cierra la instancia nica de SessionFactory y libera
todos sus recursos (informacin de mapping, pool de conexiones, etc.)

CONFIGURACIN DE LA CONEXIN DE BASE DE DATOS


En un entorno no gestionado, como por ejemplo un contenedor de servlets, la
aplicacin es la responsable de obtener las conexiones JDBC. Hibernate es
parte de la aplicacin, por lo que es responsable de obtener dichas
conexiones. Generalmente, no es conveniente crear una conexin cada vez
que se quiere interactuar con la base de datos. En vez de eso, las
aplicaciones Java deberan usar un pool de conexiones. Hay tres razones por
las que usar un pool:

Conseguir una nueva conexin es caro.


Mantener muchas conexiones ociosas es caro.
Crear la preparacin de sentencias es tambin caro para algunos
drivers.

La siguiente Figura muestra el papel de un pool de conexiones JDBC en un


entorno de ejecucin de una aplicacin web (sin utilizar Hibernate). Ya que
este entorno es no gestionado, no implementa el pooling de conexiones, por
lo que la aplicacin debe implementar su propio algoritmo de pooling o
utilizar alguna librera como por ejemplo el pool de conexiones de libre
distribucin C3P0. Sin Hibernate, el cdigo de la aplicacin normalmente
llama al pool de conexiones prara obtener las conexiones JDBC y ejecutar
sentencias SQL.

Pooling de conexiones JDBC en un entorno no gestionado

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Con Hibernate, este escenario cambia: Hibernate acta como un cliente del
pool de conexiones JDBC, tal y como se muestra en la siguiente Figura. El
cdigo de la aplicacin utiliza los APIsSession y Query para las operaciones de
persistencia y solamente tiene que gestionar las transacciones a la base de
datos, idealmente, utilizando el API HibernateTransaction.

Hibernate con un pool de conexiones en un entorno no gestionado

Hibernate define una arquitectura de plugins que permite la integracin con


cualquier pool de conexiones. Puesto que Hibernate ya incluye soporte para
C3P0, vamos a ver cmo usarlo. Hibernate actualizar la configuracin del
pool por nosotros con las propiedades que determinemos. Un ejemplo de un
fichero hibernate.properties utilizando C3P0 se muestra en el siguiente
listado:

hibernate.connection.driver_class=org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/auctiondb
hibernate.connection.username = auctionuser
hibernate.conection.password = secret
hibernate.dialect = net.sf.hibernate.dialect.PosgreSQLDialect
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_elements=50
hibernate.c3p0.idle_test_period=3000

El especificar las propiedades de la forma hibernate.c3p0.* selecciona C3P0


como el pool de conexiones para Hibernate (sin necesidad de ninguna otra
accin). Otros pools de conexiones soportados son Apache DBCP y Proxool.

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

7. CONFIGURACIONES BASADAS EN XML


Un fichero de configuracin XML para configurar completamente una
SessionFactory. A diferencia del fichero hibernate.properties, que contiene
solamente parmetros de configuracin, el fichero hibernate.cfg.xml puede
especificar tambin la ubicacin de los documentos de mapeado. Muchos
usuarios prefieren centralizar la configuracin de Hibernate de esta forma, en
vez de aadir parmetros a Configuration en el cdigo de la aplicacin. Un
ejemplo de fichero de configuracin basado en XML es el siguiente:

Siempre va estar compuesto por lo siguiente:

Configuracin de Conexin a BD (data source)


o hibernate.connection.driver_class,
o hibernate.connection.url,
o hibernate.connection.username,
o hibernate.connection.password
Dialecto hibernate
o hibernate.dialect
Especifica qu variante de SQL tiene que generar para comunicarse
con la BD
Incluye dialectos para multitud de BBDD
Configuracin pool de conexiones (opcional)
o hibernate.connection.pool_size

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

o Soporte para integrar cualquier pool de conexiones; incluye soporte


nativo para C3P0
Propiedades para habilitar logging (deshabilitado en un entorno en produccin)
o hibernate.show_sql
Habilita mostrar todas las sentencias SQL ejecutadas por Hibernate
por consola
o hibernate.format_sql
Hace que la salida sea ms legible, pero ocupa ms espacio en
pantalla
o hibernate.use_sql_comments
Hibernate aade comentarios a todas las sentencias SQL generadas
para explicar su origen
Mapping de entidades
o Lista de clases anotadas o de ficheros XML definiendo mappings.

8. TRABAJANDO CON OBJETOS MAPEADOS


Al trabajar con objetos mapeados, Hibernate provee una gran cantidad de
funciones y formas de mapeo para manipular los datos resultantes, se pueden
establecer relaciones de manytomany, onetomany, onetoone con el atributo
inverse le indicamos a Hibernate que la relacin es bidireccional.

Con el atributo cascade=save-update, le indicamos a hibernate que persista


todos los extremos de las relaciones sin necesidad de realizar un sabe explicito,
con el atributo all-delete-orphan indicamos que el padre es el responsable del
ciclo de vida del hijo.

C REAR UN OBJETO
Si se desea insertar un objeto a la base de datos, basta con que la clase este
mapeada e incluida en el archivo de configuracin de Hibernate, luego con la
interfaz session, se procede a ejecutar la funcin saveOrUpdate. Ejmplo:

Alumno Alumno1 = new Alumno();


Alumno1.setName(VictorGonzalez);
Alumno1.setCarne(200230367);
Configuration config = new Configuration();
//Se crea la sesin
SessionFactoryfact = config.buildSessionFactory();
//Se abre la sesin
Session ses = fact.openSession();
ses.saveOrUpdate(Alumno1);
ses.flush();
ses.close();

MODIFICAR UN OBJETO

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

Por defecto se escriben todas los campos de la tabla, con la propiedad


dynamic-update = true, solo se modifican los campos que han sido
modificados, es decir se genera una sentencia update que contiene solo las
columnas que fueron modificadas. Ejemplo:

Alumno1.setCarne(200230368);
Configurationconfiguracion = new Configuration();
//Se crea la sesin
SessionFactory fact = configuracion.buildSessionFactory();
//Se abre la sesin
Session ses = fact.openSession();
ses.saveOrUpdate(Alumno1);
ses.flush();
ses.close();

OBTENER UNA LISTA DE OBJETOS


En Hibernate existen varias formas de obtener los objetos de la base de datos.

Navegar en el grafo de objetos persistidos, empezando por un objeto ya


cargado.
Cargndolo por medio de su identificador ya sea por medio de get(Class,
Id), o por medio de load(Class, Id), load a diferencia de get enva una
excepcin si no se encontrase el objeto, mientras que get retorna null.
Utilizar HQL, Utilizar la API Criteria que permite hacer consultas, permite
especificar restricciones dinmicamente sin trabajar directamente con
cadenas, parseado en tiempo de compilacin.

Ejemplo: Bsqueda con interfaz criteria

Criteria criterios = session.createCriteria(Usuario.class);


criterios.add(Expression.like("carne", "200230367") );
List resultado = criterios.list();

Ejemplo: Busqueda con HQL

Query query = session.createQuery("from Alumno u where


u.carne = :fcarne");
query.setString("fcarne", "200230367");
List result = q.list();

ELIMINAR UN OBJETO
Para eliminar un objeto de la base de datos con Hibernate, simplemente es
necesario ejecutar la funcin delete desde la interfaz sessin, esto produce
que el objeto se vuelva transitivo. Ejemplo:

session.delete(Alumno1);

SOLWEB
[UNIVERSIDAD PRIVADA DEL NORTE] del 2014

BIBLIOGRAFA

Tutorial basico de Hibernate - Gavin King, Christian Bauer, Max Rydahl


Andersen, Emmanuel Bernard, y Steve Ebersole.
URL: http://www.davidmarco.es/tutoriales/hibernate-reference/index.html

Implementacin de la Persistencia con Hibernate.


URL: http://www.tic.udc.es/is-java/is-java-2009-2010/Tema3-3.pdf

Introduccin a JPA (I)


URL: http://www.davidmarco.es/blog/entrada.php?id=144

Aplicaciones Spring
http://www.youtube.com/watch?v=6EykF5QZQ74

SOLWEB

También podría gustarte