You are on page 1of 3

Diferencias entre pojo, java bean y ejb

Una duda que tuve hace algn tiempo, a saber pues POJO son las iniciales de "Plain Old Java Object", que puede interpretarse como "Un objeto Java Plano y a la Antigua". Un POJO es una instancia de una clase que no extiende ni implementa nada en especial. Por ejemplo, un Controller de Spring tiene que extender de SimpleFormController, e implementar los mtodos abstractos de ese tipo: por eso, no es un POJO. Un Servlet, tiene que extender de HttpServlet tampoco es un POJO. En cambio, si defines una clase Persona (o la clase EstoEsUnBean que est ms abajo) con atributos y unas cuantas operaciones, tienes un simple y modesto POJO. Un Enterprise Java Bean (EJB) es un componente de negocio J2EE, y para su ejecucin necesita un contenedor EJB/J2EE (JBoss, WAS, OAS, etc). El hecho de usar EJB's te da acceso a los servicios del Contenedor EJB ( manejo de transacciones, seguridad ,persistencia, etc) que simplifican bastante la construccin de soluciones empresariales. Y por ltimo, un JavaBean (o tambin conocido simplemente como Bean) es una clase Java que cumple con ciertas normas con los nombres de sus atributos y operaciones. Un JavaBean tiene declarados sus atributos como privados y implemente para cada uno de ellos un mtodo setter y getter, aadindole la palabra "set" o "get" al nombre del atributo, un constructor ssin parametros y debe ser serializable. Sera algo as:

Managed bean Backing bean EJB


son componentes del lado del servidor para la plataforma Java Enterprise Edition (Java EE), que apuntan a crear un desarrollo rpido y simple para aplicaciones distribuidas, transaccionales, seguras y portables. EJB 3.1 trae un nuevo conjunto de caractersticas que mejoran el potencial de esta tecnologa. Es una versin muy importante que traer nuevas capacidades faltantes a estos componentes. En este artculo vamos a repasar los elementos ms importantes de EJB 3.1.

Vista sin interfaz


EJB 3.1 introduce el concepto de vista sin interfaz, que consiste en una variacin de la vista Local, la cual expone todos los mtodos pblicos de un bean. Los Session Beans no estn obligados a implementar una interfaz. El contenedor de EJB provee una implementacin a la referencia a una vista sin interfaz, lo que le permite al cliente invocar cualquier mtodo pblico de un bean, y por supuesto contar con transacciones, seguridad y comportamiento con interceptores. Todos los mtodos pblicos del bean (incluyendo aquellos definidos en superclases) estn disponibles en la vista sin interfaz. Un cliente puede obtener una referencia a esta vista haciendo un lookup JNDI o inyectando la dependencia, tal cual se hace con las vistas locales o remotas.

A diferencia de las vistas locales o remotas, en donde la referencia consiste de la interfaz local/remota respectivamente, la referencia a una vista sin interfaz se declara como la clase del bean. El siguiente ejemplo de cdigo muestra cmo un servlet puede acceder a una vista sin interfaz. La referencia en el cliente es la vista sin interfaz ByeEJB, es decir, la clase del bean. El EJB no implementa ninguna interfaz. La referencia al EJB se obtiene por inyeccin de dependencia. ByeServlet

(...) @EJB private ByeEJB byeEJB; public String sayBye() { StringBuilder sb = new StringBuilder(); sb.append("<html><head>"); sb.append("<title>ByeBye</title>"); sb.append("</head><body>"); sb.append("<h1>" + byeEJB.sayBye() + "</h1>"); sb.append("</body></html>"); return sb.toString(); } (...)

ByeEJB

@Stateless public class ByeEJB { public String sayBye() { return "Bye!"; } }

Como el tipo de la referencia al EJB es la clase del bean existen ciertas limitaciones:

El cliente nunca puede usar al operador new para adquierir la referencia. Si se intenta invocar un mtodo que no es pblico se lanza una EJBException. No se puede hacer ninguna presuncin sobre la implementacin interna de la vista sin interfaz. Aunque la referencia corresponda con el tipo de la clase del bean, no hay correspondencia entre la implementacin referenciada y la implementacin del bean.

Si el bean no expone ninguna interfaz remota o local, entonces el contenedor tiene que dejar disponible una vista sin interfaz. En cambio, si el bean expone al menos una interfaz remota o una local, entonces el

contenedor no provee una vista sin interfaz (a menos que se pida explcitamente usando la anotacin LocalBean). Esta caracterstica permite crear EJB sin interfaces, lo que simplifica el desarrollo. Quizs en el futuro tengamos tambin vistas remotas sin interfaz.

JPA Singleton Stateless Statefull

You might also like