새소식

인기 검색어

JAVA

JavaBean

  • -
JavaBean이란?

JavaBean은 JavaBean API Specification에 따른 Standard이다.

여기서 Standard란 보통 클래스이름은 CapitalCase로, 필드나 메서드 이름은 camelCase로 쓰라는 말을 많이들 하는데 사실 클래스 이름을 Capital Case가 아닌 다른 형식을 사용한다고 잘못된 것은 아니다. 하지만 개발자들 사이에서는 보통 이런 규칙을 지키고 이를 Standard라고 한다.

 

 

예시로

import java.io.Serializable;

public class Page implements Serializable {
    private String pageName;
    private int pageNum;

    public Page() {
        // no-argument constructor
    }

    public String getPageName() {
        return pageName;
    }

    public void setPageName(String pageName) {
        this.pageName = pageName;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
}

이렇게 작성된 클래스를 JavaBean이라고 부른다.

 

즉, JavaBean이란, 3가지 규칙을 지키는 클래스이며 여러가지 다른 오브젝트들을 하나의 오브젝트(Bean)에 담기 위해 사용된다. 쉽게 말해 MVC 패턴에서 데이터를 표현해주는 Model에서 사용하기 위한 표현의 형태다

  1. 모든 필드는 private이며, getter/setter메서드를 통해서만 접근이 가능하다.
  2. Argument가 없는(no-argument) 생성자가 존재한다.
  3. java.io.Serializable 인터페이스를 구현한다.

모든 필드는 private이며, getter/setter메서드를 통해서만 접근이 가능하다.

 Private필드와 Getter / Setter으로 작성된 스탠다드를 지키는 클래스를 POJO(Plain Old Java Object)라고 부르며 private, getter, setter를 이용하는 이유는 캡슐화를 위해서이다.

 

 

Argument가 없는(no-argument) 생성자가 존재

 

 예를 들어서, 어떤 다른 소프트웨어가 SomeBean을 프로그램 내에서 생성하고 싶다. 이 때, 생성자에 Argument가 있다면 어떻게 되는가? 이 소프트웨어는 Argument가 몇개인지, 어떤 필드에 맵핑되는지 찾아야 한다. Argument가 없는 생성자를 반드시 만들면 오브젝트를 런타임(Runtime)에 생성해 주는 프로그램은 오브젝트 생성 → getter/setter를 이용해 값 설정으로 단순하게 목적을 달성 할 수 있다.

 

 

java.io.Serializable 인터페이스를 구현한다.

  JavaBean의 목적은 여러가지 오브젝트들을 하나의 오브젝트에 담기 위함이고 우리는 보통 담아서 네트워크를 통해 전송하거나, 파일/데이터베이스에 저장하거나 한다.

메모리에 존재하는 오브젝트를 네트워크를 통해 전송하거나 파일에 저장하려면 data stream(e.g, byte[])으로 이 오브젝트를 변환시켜줘야 한다. 이 변환 작업을 Serialization이라고 부른다. JavaBean을 저장하거나 전송하는 일이 많기 때문에, Serializable가 스탠다드에 포함되는것으로 추정된다.

'JAVA' 카테고리의 다른 글

queryForObject, queryForList  (0) 2022.10.18
Map  (0) 2022.10.18
Map, VO(Value Object)  (0) 2022.10.17
List로 선언해야하는 이유  (0) 2022.10.14
향상된 for 문  (2) 2022.09.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.