jueves, 17 de diciembre de 2009

Instalacion jboos Seam

Tutorial:
http://docs.jboss.org/tools/3.0.1.GA/en/seam/html/index.html

  • Bajar Eclipse 3.4.2 Ganimedes:
http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/index.php

  • bajar los pluggin en Eclipse :
La que hay que agregar a site es:URL : http://download.jboss.org/jbosstools/updates/stable

http://community.jboss.org/wiki/InstallingJBossTools
http://www.jboss.org/tools/download/update

  • Definir Home fold de Seam:
al llegar a seleccionar el Seam Runtime me sale el error de que 'Seam Runtime is not selected', por tanto le doy a 'New Seam Runtime' y busco la carpeta en la que está Seam, me aparece el error siguiente 'Cannot find jboss-seam.jar file'.

Hay que haber bajado previamente el framework de Seam para luego poder establecer el Seam Runtime.

http://seamframework.org/Download (vercion 2.2.0)

http://sourceforge.net/project/downloading.php?group_id=22866&filename=jboss-seam-2.1.2.zip

fuente.


  • Instalar Glassfish en eclipsse: asegurarse que el eclipse sea la ultima vercion estable de 3.4.2
Windows>Preference>Server>Runtime Environmentns>add
Download additional server adapters
elijo glassfish


  • bajar Hibernate Validator 3.1.0

  • Agregar a EAR Lybrery la libreria que esta en la carpeta de plugin de eclipse , la libreria es: org.eclipse.jdt.core_3.3.4

  • Para deployar : Export el ear y copiarlo a la carpeta dentro de personaldomine>Autodeploy

viernes, 4 de diciembre de 2009

Anotaciones en EJB 3.0

Anotaciones en EJB 3.0

API de Persistencia: EntityManager

Primero veremos algunas partes importantes de la API, como la interfaz EntityManager. Esta interfaz es en la que se apoya la API de persistencia y la que se encarga del mapeo entre una tabla relacional y su objeto Java. Funcionalmente es similar a la clase Session de Hibernate o a PersistenceManager de JDO. Proporciona mé;todos para manejar la persistencia de un Bean de Entidad, permite añadir, eliminar, actualizar y consultar así como manejar su ciclo de vida. Sus métodos má;s importantes son:

  • persist(Object entity) - almacena el objeto entity en la base de datos.

  • merge(T entity) - actualiza las modificaciones en la entidad devolviendo la lista resultante.

  • remove(Object entity) - elima la entidad.

  • find(Class entity, Object primaryKey) - busca la entidad a través de su clave primaria.

  • flush() - sincroniza las entidades con el contenido de la base de datos.

  • refresh(Object entity) - refresca el estado de la entidad con su contenido en la base de datos.

  • createQuery(String query) - Crea una query utilizando el lenguaje JPQL.

  • createNativeQuery() - Crea una query utilizando el lenguaje SQL.

  • isOpen() - Comprueba si está; abierto el EntityManager.

  • close() - Cierra el EntityManager.

Podemos obtener una referencia al EntityManager a través de la anotación @PersistenceContext. El contenedor de EJB nos proporciona el contexto de persistencia mediante inyección por lo que no tendremos que preocuparnos de su creación y destrucción.

@PersistenceContext
EntityManager entityManager;

Otra forma de obtener un EntityManager es a través de la factoría EntityManagerFactory con el nombre del contexto de persistencia configurado en el persistence.xml .


EntityManagerFactory emf = Persistence.createEntityManagerFactory("TestPersistence");
EntityManager em = emf.createEntityManager();

En el método createEntityManagerFactory de la clase Persistence se debe pasar el nombre del contexto definido en el persistence.xml .



Ciclo de vida de una Entidad

Engloba dos aspectos: la relación entre el objeto Entidad y su contexto a persistir y por otro lado la sincronización de su estado con la base de datos. Para realizar estas operaciones la Entidad puede encontrarse en cualquiera de estos cuatro estados:

  • new - Nueva instancia de la Entidad en memoria sin que aún le sea asignado su contexto persistente almacenado en la tabla de la base de datos.

  • managed - La Entidad dispone de contenido asociado con el de la tabla de la base de datos debido a que se utilizó el método persist(). Los cambios que se produzcan en la Entidad se podrá;n sincronizar con los de la base de datos llamando al método flush().

  • detached - La Entidad se ha quedado sin su contenido persistente. Es necesario utilizar el método merge() para actualizarla.

  • removed - Estado después de llamarse al método remove() y el contenido de la Entidad será; eliminado de la base de datos.


Anotaciones de un Bean de Entidad

@Entity: Indica que es un Bean de Entidad.

  • name - por defecto el nombre de la clase pero se puede especificar otra diferente.

Métodos del ciclo de vida de una Entidad

@EntityListeners: Se pueden definir clases oyentes (listeners) con métodos de ciclo de vida de una entidad. Para hacer referencia a un listener se debe incluir esta anotación seguido entre paréntesis de la clase: @Entity Listeners(MyListener.class)

@ExcludeSuperclassListeners: Indica que ningún listener de la superclase será; invocado por la entidad ni por ninguna de sus subclases.

@ExcludeDefaultListeners: Indica que ningún listener por defecto será; invocado por esta clase ni por ninguna de sus subclases.

@PrePersist: El método se llamará; justo antes de la persistencia del objeto. Podría ser necesario para asignarle la clave primaria a la entidad a persistir en base de datos.

@PostPersist: El método se llamará; después de la persistencia del objeto.

@PreRemove: El método se llamará; antes de que la entidad sea eliminada.

@PostRemove: El método se llamará; después de eliminar la entidad de la base de datos.

@PreUpdate: El método se llamará; antes de que una entidad sea actualizada en base de datos.

@PostUpdate: El método se llamará; después de que la entidad sea actualizada.

@PostLoad: El método se llamará; después de que los campos de la entidad sean cargados con los valores de su entidad correspondiente de la base de datos. Se suele utilizar para inicializar valores no persistidos.

@FlushMode: Modo en que se ejecuta la transacción: FlushModeType.AUTO (por defecto) y FlushModeType.COMMIT.

@NamedQuery: Especifica el nombre del objeto query utilizado junto a EntityManager.

  • name - nombre del objeto query.

  • query - especifica la query a la base de datos mediante lenguaje Java Persistence Query Language (JPQL)

@NamedQueries: Especifica varias queries como la anterior.

@NamedNativeQuery: Especifica el nombre de una query SQL normal.

  • name - nombre del objeto query.

  • query - especifica la query a la base de datos.

  • resultClass - clase del objeto resultado de la ejecución de la query.

  • resultSetMapping - nombre del SQLResultSetMapping definido (se explica má;s abajo).

@NamedNaviteQueries: Especifica varias queries SQL.

@SQLResultSetMapping: Permite recoger el resultado de una query SQL.

  • name - nombre del objeto asignado al mapeo.

  • EntityResult[] entities() - entidades especificadas para el mapeo de los datos.

  • ColumnResult[] columns() - columnas de la tabla para el mapeo de los datos.

@NamedNativeQuery(name="nativeResult", query="SELECT NOMBRE,APELLIDOS FROM USUARIOS WHERE USUARIO_ID= 123", resultSetMapping = "usuarioNamedMapping")

@SqlResultSetMapping(name="usuarioNamedMapping",
entities = {

@EntityResult(entityClass = com.autentia.entidades.Usuario.class,
fields = {

@ColumnResult(name="usuarioId", column="USUARIO_ID"),

@ColumnResult(name="nombre", column="NOMBRE"),
@ColumnResult(name="apellidos", column="APELLIDOS")})})

@PersistenceContext: Objeto de la clase EntityManager que nos proporciona todo lo que necesitamos para manejar la persistencia.

  • name - nombre del objeto utilizado para la persistencia en caso de ser diferente al de la clase donde se incluye la anotación.

  • unitName - identifica la unidad de la persistencia usada en el bean en caso de que hubiera má;s de una.

  • type - tipo de persistencia, TRANSACTION (por defecto) | EXTENDED.

@PersistenceContexts: Define varios contextos de persistencia.

@PersistenceUnit: Indica la dependencia de una EntityManagerFactory definida en el archivo persistence.xml.

  • name - nombre del objeto utilizado para la persistencia en caso de ser diferente al de la clase donde se incluye la anotación.

  • unitName - identifica la unidad de la persistencia usada en el bean en caso de que hubiera má;s de una.


@Lob: Se utiliza junto con la anotación @Basic para indicar que un campo se debe persistir como un campo de texto largo si la base de datos soporta este tipo.

viernes, 25 de septiembre de 2009

Manejo de Fechas...

  • Obtener el dia de la semana de una fecha y obtener el domingo siguiente.
  • Calendar c = Calendar.getInstance();
    c.setTime(meta.getFechaHasta());
    int diaSem = c.get(Calendar.DAY_OF_WEEK);
    Date proximoDomingo = DateUtil.desplazarDias(meta.getFechaHasta(),(8-diaSem)%7);
    meta.setFechaHasta(proximoDomingo);
    //---
    meta.setFechaDesde(DateUtil.desplazarDias(meta.getFechaHasta(),-6));
    meta.setLocal(local);
  • Sumar dias a una fecha:

    GregorianCalendar calendario = new GregorianCalendar();

    Query qfecha = TransactionManager.getInstance().getEntityManager()

    .createQuery("select current_date()");

    calendario.setTime((Date)qfecha.getSingleResult());

    calendario.add(Calendar.YEAR, -21);

    Date FechaNacimiento = calendario.getTime();

dar formato a la fcha

String fecha= campos[10];

SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");

try {

beneficiario.setNacimiento(sdf.parse(fecha));


} catch (ParseException ex) {

Logger.getLogger(ControladorBenficiario.class.getName()).log(Level.SEVERE, null, ex);

}

  • de una fecha a una cadena

    SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");

    p.printf("%-8.8s",sdf.format(b.getNacimiento()));