- Los MDB's no deben invocar a los métodos isCallerInRole(), getEJBObject(), getEJBLocalObject()
- Las clases correspondientes a Session Beans deben ser públicas, no finales y no abstractas. Deben poseer un constructor público sin parámetros y no tener el método finalize implementado.
- Si el session bean sólo implementa una interfaz, dicha interfaz será considerada como interfaz de negocio local.
- Los timers pueden ser creados desde session beans stateless, MDB's y entity beans 2.1
- Se puede obtener TimerService por inyección de dependencia (DI) o mediante context.getTimerService
- TimerService nos provee de los métodos createTimer y getTimers
- Se puede implementar un método timeour callback con la anotación @Timeout (void method(Timer)) o implementando la interfaz javax.ejb.TimedObject junto a su método public void ejbTimeout (Timer)
- Al invocar una operación en un Timer expirado, se obtiene NoSuchObjectLocalException
- Un método timeout puede tener cualquier visibilidad pero no puede ser static ni final
- Una clase entidad debe estar anotada con @Entity o declarada en el descriptor XML
- Debe tener un constructor sin parámetros public o protected
- No debe ser final , y ninguno de sus métodos debe ser final.
- El estado de las variables debe ser private, protected o package (no public!!!)
- Se usa la anotación @ExcludeDefaultListeners para excluir los listeners por defecto (duh!)
- Se usa la anotación @ExcludeSuperclassListeners para evitar la invocación de listener de la clase padre en la misma clase y sus subclases.
- Una entidad puede sobreescribir los listeners definidos por su clase padre
- Los métodos listener en la clase Listener tienen la firma void method (Object) y los métodos listener en la misma clase o en la clase padre tienen la firma : void method
- Orden de invocación de Listeners:
- Listeners por defecto para la persistence unit
- Entity Listener del padre
- Entity Listener de la entidad
- Listeners definidos en el padre
- Listeners definidos en la entidad
- PersistenceContextType puede ser TRANSACTIOPNo EXTENDED. TransactionType puede ser JTA (por defecto para aplicaciones J2EE) o RESOURCE_LOCAL (por defecto en J2SE )
- Las excepciones NoResultException y NoUniqueResultException no causan rollback en la transacción
- Las funciones agregadas de JPQL son : AVG, COUNT, MIN, MAX, SUM
- COUNT devuelve un long
- MIN/MAX devuelve el tipo al que son aplicadas
- AVG devuelve double
- SUM retorna Long, Double, BigInteger o BigDecimal
- De no encontrar valores COUNT devuelve cero. El resto devuelve NULL
Basado en las notas de Raghavendra Balgi
Publicar un comentario