자바 Java

Java Bean

leexx 2023. 1. 16. 08:00

Java Bean 이란

아래의 convention 을 지키는 Java class 를 말한다.

  • Serializable 을 Implement 할 것

  • no-argument constructor 를 포함하고 있어야 할 것

  • 모든 property 는 private 이고, 이를 위한 public getter 와 setter method 가 있을 것

  • setter syntax

    • public 일 것
    • return type 은 void 일 것
    • set 으로 시작할 것
    • argument 를 받아야 할 것
  • getter syntax
    • public 일 것
    • return type 은 void 가 아닐 것
    • get 으로 시작할 것
    • argument 를 받지 말 것
    • 추가) Boolean property 의 getter 의 경우, get 보다 is 로 시작하는 것이 더 좋다

Bean 이름의 유래

커피 콩 (Bean) 에서 유래한 말이다. 콩은 코드의 작은 부분들을 의미하고 통은 이를 모은 것을 말한다. 커피 콩 (Bean) 들을 하나의 통 (Jar) 에 담아 보관한다는 것과 비슷한 맥락.

왜 No-Argument 생성자를 사용하는지?

예를 들어서, 어떤 다른 소프트웨어가 SomeBean을 프로그램 내에서 생성하고 싶다.

public class BeanCreator {

    public Object create() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        String classPath = "SomeBean";
        Class cls = Class.forName(classPath);
        return cls.newInstance();
    }
}

이 때, 생성자에 Argument가 있다면 어떻게 되는가? 이 소프트웨어는 Argument가 몇개인지, 어떤 필드에 맵핑되는지 찾아야 한다.

Argument가 없는 생성자를 반드시 만들면 위처럼 오브젝트를 런타임(Runtime)에 생성해 주는 프로그램은 오브젝트 생성 → getter/setter를 이용해 값 설정으로 단순하게 목적을 달성 할 수 있다.

Class 와 Interface 외에도 Java Bean 이 필요한 이유

  • Java Bean 의 장점
    • 직렬화 (Serialization) 를 잘 할 수 있다.
      • 직렬화를 하면, Java memory 밖에서도 Java Bean 을 유지하거나 전송할 수 있다. (ex. HDD, network)
    • 다양한 환경에서 쓸 수 있도록 설계할 수 있는 software component 이다.
    • 일관된 convention 이므로, 누가 코드를 읽더라도 문서나 메뉴얼 없이 일관성 있게 코드를 이해할 수 있다.
  • Java Bean 사용 예시
    • Servlet 의 경우에도, session 의 데이터를 직렬화해야 하는데, 이 경우 Java Bean 을 사용한다.

Serialization (직렬화) 이란

  • Serialization 이란
    • 객체의 내용을 바이트 단위로 변환하는 것
  • Serialization 을 하는 이유
    • 저장하고, 접근하고, 네트워크를 통해서 주고받을 수 있도록 하기 위함

참고 자료