YourNote 601: JavaBean - zhamri/CSC584-Enterprise_Programming GitHub Wiki

1. What is a JavaBean?

A JavaBean is a reusable Java class that follows a set of conventions.

A JavaBean is mainly used to:

  • Store data
  • Transfer data between layers
  • Represent entities or models
  • Encapsulate properties

A JavaBean is NOT the same as EJB (Enterprise JavaBean).

JavaBean is simply a Plain Old Java Object (POJO) that follows specific rules.


2. JavaBean Rules

A JavaBean should:

1. Have a public no-argument constructor

public Student() {

}

2. Have private fields

private String name;
private int age;

3. Have public getter methods

public String getName() {
    return name;
}

4. Have public setter methods

public void setName(String name) {
    this.name = name;
}

5. Implement Serializable (recommended)

implements Serializable

3. Basic JavaBean Example

import java.io.Serializable;

public class Student implements Serializable {

    private String id;
    private String name;
    private int age;

    public Student() {

    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    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;
    }
}

4. Creating and Using a JavaBean

public class Main {

    public static void main(String[] args) {

        Student student = new Student();

        student.setId("S001");
        student.setName("Ali");
        student.setAge(20);

        System.out.println(student.getId());
        System.out.println(student.getName());
        System.out.println(student.getAge());

    }
}

Output:

S001
Ali
20

5. Why Use Private Variables?

Example:

private String name;

Instead of:

public String name;

Benefits:

  • Encapsulation
  • Data protection
  • Validation support
  • Easier maintenance

6. Getters and Setters

Getter

Returns a value.

public String getName() {
    return name;
}

Setter

Updates a value.

public void setName(String name) {
    this.name = name;
}

7. JavaBean Naming Convention

Field

private String studentName;

Getter

public String getStudentName() {
    return studentName;
}

Setter

public void setStudentName(String studentName) {
    this.studentName = studentName;
}

8. Boolean Property Convention

Field:

private boolean active;

Getter:

public boolean isActive() {
    return active;
}

Setter:

public void setActive(boolean active) {
    this.active = active;
}

9. JavaBean with Validation

public void setAge(int age) {

    if(age >= 0) {
        this.age = age;
    }

}

Usage:

student.setAge(20);

Benefits:

  • Prevent invalid data
  • Centralized validation

10. JavaBean in JDBC Applications

Example:

Student Bean

public class Student {

    private int id;
    private String name;

    public Student() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Reading Data

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

    Student student = new Student();

    student.setId(rs.getInt("id"));
    student.setName(rs.getString("name"));

}

11. JavaBean in Servlet/JSP

Servlet:

Student student = new Student();

student.setName("Ali");

request.setAttribute("student", student);

JSP:

${student.name}

or

${student.age}

12. JavaBean in Spring Boot

Entity Example:

@Entity
public class Student {

    @Id
    private Long id;

    private String name;

    public Student() {

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}

Spring Boot heavily uses JavaBean conventions.


13. JavaBean vs POJO

POJO

Any normal Java object.

public class Student {

}

JavaBean

A POJO that follows JavaBean rules.

public class Student implements Serializable {

    private String name;

    public Student() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Relationship:

POJO
  |
  +-- JavaBean

All JavaBeans are POJOs.

Not all POJOs are JavaBeans.


14. JavaBean vs EJB

Feature JavaBean EJB
Purpose Store Data Business Logic
Server Required No Yes
Application Server No Yes
Transactions No Yes
Security No Yes
Scheduling No Yes
Complexity Simple Complex
Example Student.java StudentServiceEJB.java

15. JavaBean in MVC Architecture

View (JSP)
      |
Controller (Servlet)
      |
Model (JavaBean)
      |
Database

Example:

Student.jsp
      |
StudentServlet
      |
StudentBean
      |
MySQL

16. Advantages of JavaBeans

  • Reusable
  • Easy to understand
  • Supports encapsulation
  • Framework friendly
  • Easy maintenance
  • Standardized naming convention

17. Disadvantages of JavaBeans

  • Many getter/setter methods
  • Boilerplate code
  • Can become verbose

Example:

private String id;
private String name;
private int age;

requires many methods.


18. Modern Alternative – Java Record

Java 16 introduced Records.

JavaBean:

public class Student {

    private String id;
    private String name;

    public Student() {

    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

Record:

public record Student(
        String id,
        String name
) {
}

Much shorter.


Summary

A JavaBean is a reusable Java class that follows standard conventions:

  • Private fields
  • Public getters
  • Public setters
  • No-argument constructor
  • Serializable (recommended)

JavaBeans are commonly used for:

  • Data transfer
  • MVC applications
  • JDBC applications
  • Spring Boot entities
  • DTOs (Data Transfer Objects)

JavaBean is a simple data container, while EJB is an enterprise component used for business logic and enterprise services.