SCBCD: Apuntes tácticos 4


(Imagen: Paul Gauguin - Mujer con flor)

  • En una relación de uno a uno se debe usar la anotación JoinColumn (name, referencedColumnName). Name es el nombre de la columna en la tabla actual y referencedColumnName es el nombre de la llave foránea en la otra tabla. Esta anotación reside en la entidad de la tabla que tiene la llave foránea (llave primaria en la otra tabla)
  • Una relación uno a uno bidireccional utiliza un atributo mappedBy en la anotación OneToOne en la tabla secundaria.
  • En una relación una a muchos y muchos a uno se usa la anotación @JoinColumn en el lado "muchos" de la relación y el atributo mappedBy en el otro lado de la relación para relaciones bidireccionales.
  • Una relación ManyToOne no utiliza el atributo mappedBy debido a que el lado "muchos" siempre es el lado "owning" de la relación
  • En las relaciones muchos a muchos se utiliza una tabla de asociación.
  • Se utiliza la anotación @JoinTable en el lado "owning" de la relación (que puede ser cualquiera)
  • Se utiliza un atributo mappedBy en una relación ManyToMany para una relación bidireccional
  • Para sentencias JPQL, no se puede mezclar parámetros nombrados y posicionales
  • Los inner joins son los joins por defecto
  • Los Left Join (o sea Left Outer Join) obtiene entidades donde los valores pueden ser nulos
  • "_" reemplaza a un carácter y "%" reemplaza a un grupo de caracteres para sentencias LIKE
  • Para subquerys se utilizan las sentencias ALL, ANY, SOME, EXISTS
  • El bean provider es responsable de crear los archivos ejb-jar y de implementar las interfaces de negocio y las interfaces de vista al cliente
  • Aquí van las responsabilidades del application assembler
  • Integra la aplicación con otros componentes
  • Puede modificar los valores de entradas del entorno
  • Puede modificar los nombres de las relaciones para enity beans 2.1
  • Puede definir roles de seguridad, y enlazar referencias a roles de seguridad
  • Puede modificar atributos de transacción
  • Puede modificar el orden de los interceptores, aumentarlos o sobreescribirlos.
  • Aquí van las responsabilidades del deployer
  • Resuelve dependencias externas requeridas por el EJB
  • Usa las herramientas definidas por el proveedor del contenedor
  • Mapea los roles de seguridad definidos por el bean Provider/Application Assembker con roles actuales del entorno operativo.
  • Aquí van las responsabilidades del proveedor del servidor EJB
  • Proveer las herramientas de despliegue necesarias para poner en marcha los EJB's
  • Dar soporte a lso EJB's desplegados en tiempo de ejecución
  • Darle herramientas las administrador del sistema para controlar el comportamiemto en tiempo de ejecución de los beans
  • Las clases de persistencia administradas deben ser incluidas en la raíz de la persistence unit
  • La anotación DeclareRoles y RunAs sólo es aplicable a clases.
  • La anotación DenyAll es aplicada sólamente a métodos.
  • Si un bean implementa más de una interfaz de negocio, entonces necesita especificarlas como @Local o como @Remote
  • Una interfaz de negocio no puede ser a la vez Local y Remote
  • Una interfaz de negocio no puede heredar de javax.ejb.EJBObject o javax.ejb.EJBLocalObject
  • La clase bean puede ser específicada como @Local o @Remote (o las dos con una lista de interfaces)
  • Los métodos de la interfaz de negocio no deben lanzar RemoteException
  • Los métodos interceptores callback pueden tener cualquier visibilidad pero no deben ser fianl ni static
  • Un método callback no puede ser especificado más de una vez en una clase.
  • Los métodos @AroundInvoke deben llamar siempre a InvocationContext.proceed()
  • Los interceptores de métodos de negocio tienen la siguiente firma: public Object method (InvocationContext) throws Exception
  • La interfaz de negocio para un MDB es la interfaz message listener (javax.jms.MessageListener)

    Basado en las notas de Raghavendra Balgi

Publicar un comentario