Entity beans vs. session beans
Best practices recommend entity beans for data access and session beans as frontline controllers between the Web tier and business tier or between the client tier and the business tier, depending on the type of application. Business logic should be implemented with session beans and/or plain old Java objects (POJOs). If you will be receiving asynchronous messages within your workflow framework, message-driven beans are very effective and highly recommended. With this in mind, the following chart loosely illustrates the interactions between these components:
Browser Application:
Browser <--> Servlet <--> Stateless Session Bean <--> Entity Bean <--> Data
Fat-Client Application:
Swing App <--> Stateful Session Bean <--> Entity Bean <--> Data
Asynchronous Messaging:
App <--> Session Bean <--> Message-Driven Bean <--> Message Store