lunes, 11 de mayo de 2009

Definir mi proyecto como repositorio.

Si queremos acceder a un repositorio que no esa el que tenemos en local, tenemos que crearnos una etiqueta mirror en el fichero setting.xml de la carpeta configuracion de maven.


En esa etiqueta ponemos todo lo necesario para conectarsno al repositorio, id, url y mirrorof

El proyecto lo exportamos como jar al repositorio que quieras indicandolo en el pom, con el comando mvn deploy.

viernes, 8 de mayo de 2009

Abstracción

Permite capatar las caraterísticas esenciales de un objeto, asi como su comportamiento.

Vamos a ver un ejemplo, el de un automovil, que es que todo el mundo usa a la hora de explicar esto.
Veamos lo que podemos abtraer del automovil:
  • marca
  • modelo
  • nº de puertas
  • color
Ahora veamos las caracterisiticas semenjantes:
  • arrancar.
  • frenar.
  • acelerar
La abstracción es clave para diseñar un buen software.

IBATIS

Es un framework de código abierto basado en capas que se ocupa de la capa de Persistencia.

Puede ser implementado en Java y .NET (también existe un port para Ruby on Rails llamado RBatis).

Asocia objetos de modelo (JavaBeans) con sentencias SQL o procedimientos almacenados mediante ficheros XML, simplificando la utilización de bases de datos.

A diferencia de Hibernate, se necesitan conocimientos de sql, permite la optimización de las consultas, ya sea con lenguaje estándar o con SQL propietario del motor de base de datos utilizado. Con iBATIS, siempre se sabe lo que se está ejecutando en la base de datos, y tiene herramientas para evitar el problema de las “N + 1 consultas” y para generar consultas dinámicas muy potentes.

Se configura mediante un fichero XML de configuración, sql-map-config.xml.
Además cada objeto de modelo, que representa al objeto en la aplicación, se relaciona con un fichero del tipo sqlMap.xml, que contiene sus sentencias SQL. Por ejemplo, un objeto Java Usuario con un objeto XML usuario.xml.

Es posible subdividir la capa de Persistencia en tres subcapas:

  • La capa de Abstracción será el interfaz con la capa de la lógica de negocio, haciendo las veces de “facade” entre la aplicación y la persistencia. Se implementa de forma general mediante el patrón Data Access Object (DAO), y particularmente en iBATIS se implementa utilizando su framework DAO (ibatis-dao.jar).
  • La capa de Framework de Persistencia será el interfaz con el gestor de Base de Datos ocupándose de la gestión de los datos mediante un API. Normalmente en Java se utiliza JDBC; iBATIS utiliza su framework SQL-MAP (ibatis-sqlmap.jar).
  • La capa de Driver se ocupa de la comunicación con la propia Base de Datos utilizando un Driver específico para la misma.

Toda implementación de iBATIS incluye los siguientes componentes:

  • Data Mapper: proporciona una forma sencilla de interacción de datos entre los objetos Java y .NET y bases de datos relacionales.
  • Data Access Object: abstracción que oculta la persistencia de objetos en la aplicación y proporciona un API de acceso a datos al resto de la aplicación

martes, 5 de mayo de 2009

Tipos de Clases

Existen varios tipos de clases en java:
  • abstract --> esta clase tiene al menos un método abstracto, no se instancia y se utiliza como clase base para herencia. La clase que deriva de esta tiene que declarar e implementar todos los métodos de la clase abstracta que sean abstracto, sino daria un error de compilación. Lo métodos no pueden ser privados o staticos sino no se pueden acceder a ellos. Ejemplo
abstract class Prueba {

abstract metodo1();
abstract void metodo2();
void metodo3(){ //implementación }

}

public class Prueba2 extends Prueba{

void metodo1(){ //implementación }
void metodo2(){ //implementación }

}
  • synchronizable --> Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
  • public -->Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.
  • final -->esta se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.

lunes, 4 de mayo de 2009

Calendar

Calendar es una clase abstracta base para convertir entre un objeto de tipo Date (java.util.Date) y un conjunto de campos enteros como YEAR (año), MONTH (mes), DAY (día), HOUR (hora), etc.

Calendar tiene muchas funciones en común con java.util.Date, lo que diferencia es a la hora de extraer datos, los de java.util.Date están obsoletos, y si manejamos algunos de estos métodos en realidad esas accediendo a funcionalidades de la clase Calendar.

El método getInstance() nos devuelve una subclase de Calendar con la hora actual, y usamos el método set( ) para cambiar a la fecha.

Tenemos que tener en cuenta que no todos los calendarios tienes años de 365 o 12 meses y a la hora de realizar operaciones tenemos que utilizar las subclases adecuadas el tipo de calendario que queramos.

Para extraer los datos tenemos:
  • YEAR
  • MONTH
  • DATE, DAY_OF_MONTH
  • HOUR
  • MINUTE
  • SECOND
Por ejemplo nosotros utilizaríamos la subclase GregorianCalendar.
Con esta clase podemos sumar varios días sin preocuparnos de calcular luego el año o el mes, lo hace la subclase sola.

Tenemos dos métodos que nos permiten avanzar un tiempo exacto sobre los datos obtenidos anteriormente, add(Constante, valor) y roll(Constante, valor), recordemos que constante es por ejemplo Calendar.MONTH.

Roll() este hay que tener en cuanta que cuando llega al limite inferior o superior de constante cambia al limite contrario sin cambiar los siguientes atributos.

Los que hay que tener en cuenta son add(), get(),set().

lunes, 20 de abril de 2009

JAXWS

Es el API java para el desarrollo de WS XML, forma parte de la distribución J2EE de Sun y al igual que otras APIs utiliza las anotaciones para el despliegue de las aplicación.

JAX-WS es una tecnología para la construcción de servicios web y los clientes que se comunican a través de XML.

JAX-WS permite a los desarrolladores escribir mensajes orientados a RPC, así como orientado a servicios web.

En JAX-WS, una llamada a procedimiento remoto está representado por un protocolo basado en XML, como SOAP.
La especificación SOAP define sobre la estructura, la codificación de normas y convenciones de representación de llamadas a procedimiento remoto y las respuestas.
Estas llamadas y respuestas se transmiten como mensajes SOAP (archivos XML) a través de HTTP.

Aunque los mensajes SOAP son complejas, la API de JAX-WS oculta esta complejidad de la aplicación de desarrolladores En el lado del servidor, el desarrollador especifica los procedimientos remotos mediante la definición de métodos de una interfaz escrita en el lenguaje de programación Java. El desarrollador también los códigos de una o más clases que implementan esos métodos.

Los programas cliente también son fáciles de código. Un cliente crea un proxy (un objeto que representa el servicio) y luego simplemente invoca los métodos en el proxy. Con JAX-WS, el desarrollador no generar o analizar mensajes SOAP. Es el tiempo de ejecución JAX-WS sistema que convierte las llamadas a la API y las respuestas y los mensajes de SOAP.

Con JAX-WS, los clientes y los servicios web tienen una gran ventaja: la independencia de la plataforma de lenguaje de programación Java. Además, JAX-WS no es restrictiva: JAX-WS un cliente puede acceder a un servicio web que no se está ejecutando en la plataforma Java, y viceversa.

Esta flexibilidad es posible gracias a JAX-WS utiliza tecnologías definidas por el World Wide Web Consortium (W3C): HTTP, SOAP, y el Lenguaje de descripción de servicios Web (WSDL)

WSDL especifica un formato XML para describir un servicio como un conjunto de parámetros de funcionamiento en los mensajes.



lunes, 13 de abril de 2009

Comandos DDL

  • CREATE Utilizado para crear nuevas tablas, campos e índices.
  • DROP Empleado para eliminar tablas e índices.
  • ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.