Enterprise JavaBeans (EJB): Creating Beans and Session/Entity Types
What is a JavaBean?
A JavaBean is a reusable, plain Java class following simple conventions so that tools, frameworks, and IDEs can inspect and manipulate it automatically.
JavaBean Conventions
- Class must have a public no-argument constructor
- Properties are private, accessed via public getter/setter methods
- The class should be Serializable
import java.io.Serializable;
public class Student implements Serializable {
private String name;
private int age;
public Student() { } // no-arg constructor
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
JavaBean Properties
| Property Type | Description |
|---|---|
| Simple | Single value with getX() / setX() |
| Indexed | Array-valued, with getX(int i) / setX(int i, value) |
| Bound | Notifies listeners (PropertyChangeListener) when changed |
| Constrained | Allows listeners to veto a change (VetoableChangeListener) |
Enterprise JavaBeans (EJB)
EJB is a server-side component architecture for building scalable, transactional, and secure distributed business applications. EJB components run inside an EJB container (part of a Java EE / Jakarta EE application server), which supplies transaction management, security, concurrency, and remote access — so the developer focuses on business logic only.
Types of Enterprise Beans
| Type | Lifespan | State | Purpose |
|---|---|---|---|
| Stateless Session Bean | Per method call | No client-specific state retained | Reusable business operations (e.g., a calculator, a mailer) |
| Stateful Session Bean | Tied to one client's conversation | Retains state across calls | Multi-step workflows (e.g., shopping cart) |
| Entity Bean | Persists beyond the application (backed by a database row) | Represents persistent data | Object representation of a database record |
Creating a Stateless Session Bean
import javax.ejb.Stateless;
@Stateless
public class CalculatorBean implements CalculatorRemote {
public int add(int a, int b) {
return a + b;
}
}
// Remote business interface
public interface CalculatorRemote {
int add(int a, int b);
}
Creating a Stateful Session Bean
import javax.ejb.Stateful;
import java.util.ArrayList;
import java.util.List;
@Stateful
public class ShoppingCartBean implements ShoppingCartRemote {
private List<String> items = new ArrayList<>();
public void addItem(String item) {
items.add(item); // remembered for this client's session
}
public List<String> getItems() {
return items;
}
}
Entity Beans
An Entity Bean represents persistent business data stored in a database — each instance typically maps to one row of a table. Modern Java EE replaces the old EJB 2.x Entity Bean model with JPA (@Entity), but the concept is the same:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
private int empId;
private String name;
private double salary;
// getters and setters
}
Session Bean vs Entity Bean
| Feature | Session Bean | Entity Bean |
|---|---|---|
| Represents | A process / business logic | Persistent data |
| Lifespan | Short-lived (per call or per client) | Long-lived (tied to DB record) |
| Persistence | Not persisted | Backed by the database |
| Example | OrderProcessorBean | Employee, Customer entity |
Key Takeaway: A JavaBean is just a class with a no-arg constructor and getters/setters. Enterprise JavaBeans extend that idea into server-managed components — Stateless beans for reusable logic, Stateful beans for per-client conversations, and Entity beans (now largely JPA @Entity) for persistent data.