Light Blue Pointer
본문 바로가기
Developing/TIL(Develop)

JavaBean

by Greedy 2024. 5. 31.

JavaBean이란

데이터를 표현하는 것을 목적으로 하는 자바 클래스

여러가지 객체들을 하나의 객체에 담아서 네트워크를 통해 전송하거나 파일/데이터베이스에 저장하기 위해 Serialization을 해서 data stream(e.g, byte[])으로 이 객체를 변환시켜줘야 한다.

JavaBean의 주요 규칙

기본 생성자 (Default Constructor)

모든 JavaBean은 매개변수가 없는 기본 생성자(No-Argument Constructor)를 가져야 한다.

이는 인스턴스화를 쉽게 하기 위해 필요하다.

생성자에 Argument가 있다면 런타임에 Argument가 몇개인지, 어떤 필드에 매핑되는지 찾아야 한다.

Argument가 없는 생성자가 반드시 있도록 하면 객체를 런타임(Runtime)에 생성할때 생성후 getter/setter를 이용한 값 설정을 하면 되어 더 간편하다.

public class Person {
    public Person() {
        // 기본 생성자
    }
}

속성 접근자 메서드 (Property Accessor Methods)

JavaBean의 속성은 private으로 선언하고, 각 속성에 대해 public getter와 setter 메서드를 제공한다. 이는 데이터 캡슐화와 접근 제어를 위해 필요하다.

이러한 스탠다드를 지키는 클래스를 POJO(Plain Old Java Object)라고도 한다.

public class Person {
    private String name;
    private int age;

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

직렬화 (Serialization)

JavaBean은 java.io의 Serializable 인터페이스를 구현하여 객체의 상태를 직렬화하고 역직렬화할 수 있어야 한다. 이는 JavaBean이 파일이나 데이터베이스에 저장되거나 네트워크를 통해 전송될 수 있도록 하기 위함이다.

여러가지 객체들을 하나의 객체에 담아서 네트워크를 통해 전송하거나 파일/데이터베이스에 저장하기 위해 Serialization을 해서 data stream(e.g, byte[])으로 이 객체를 변환시켜줘야 한다.

import java.io.Serializable;

public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;

    // 기본 생성자, getter 및 setter 메서드
}

JavaBean의 목적 및 사용 사례

재사용성

JavaBean은 다양한 애플리케이션에서 재사용할 수 있는 컴포넌트로 설계된다. 예를 들어, GUI 라이브러리에서 사용되는 버튼, 텍스트 필드 같은 컴포넌트들은 JavaBean으로 구현된다.

캡슐화

JavaBean은 속성을 private으로 선언하고, public 메서드를 통해 접근하게 함으로써 캡슐화를 제공한다. 이는 데이터의 무결성을 유지하고, 클래스 내부 구현을 숨기는 데 도움이 된다.

이벤트 처리

JavaBean은 이벤트 리스너를 통해 이벤트 처리 메커니즘을 지원한다. 이는 GUI 응용 프로그램에서 사용자 상호작용을 처리하는 데 유용하다.

JSP와의 통합

JavaBean은 JSP(JavaServer Pages)에서 자주 사용된다. JSP 페이지에서 JavaBean을 사용하여 데이터를 처리하고, 프레젠테이션 로직을 단순화할 수 있다.

JSP에서 JavaBean 사용

JavaBean 클래스

public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private String username;
    private String email;

    public User() { }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

JSP 페이지에서 JavaBean 사용

jspCopy code
<jsp:useBean id="user" class="com.example.User" scope="session" />
<jsp:setProperty name="user" property="username" value="john_doe" />
<jsp:setProperty name="user" property="email" value="john@example.com" />

<p>Username: <jsp:getProperty name="user" property="username" /></p>
<p>Email: <jsp:getProperty name="user" property="email" /></p>

위 예시에서 JSP 페이지는 User JavaBean을 생성하고, 속성을 설정한 후 출력한다. 이를 통해 JavaBean은 데이터 저장 및 표현을 위한 재사용 가능한 컴포넌트로 작동한다.

JavaBean은 이러한 특징과 목적을 통해 자바 애플리케이션 개발에서 중요한 역할을 하며, 재사용 가능하고 유지보수 가능한 코드를 작성하는 데 기여한다.