본문 바로가기

JAVA

[JAVA] JAVA Beans

자바 빈즈(Java Beans)

  • 자바로 작성한 클래스 중 자바 빈즈 컨벤션(Java Beans Convention)에 맞게 작성된 클래스
  • 자바로 작성된 소프트웨어 컴포넌트를 지칭하는 단어이다.

컴포넌트(Component)

  • 애플리케이션에서 특정한 기능을 사용할 수 있도록 여러 개의 프로그램 함수를 모은 기능적 단위를 말한다.

자바 빈즈 컨벤션(Java Beans convnetion)

  • 자바빈은 기본패키지 이외의 특정 패키지에 속해 있어야한다.
  • 클래스는 인자(Argument)가 없는 기본 생성자(Default constructor)를 갖는다.
  • 클래스의 멤버 변수는 프로퍼티(Properties)라고 하며 private 접근 제한자를 가져야한다.
  • 클래스의 프로퍼티들은 getter/setter 메서드를 통해 접근할 수 있어야 한다.
  • getter/setter 메서드의 접근제한자는 public이어야 하며, get/set{프로퍼티 이름}의 형식으로 정의되어야한다.
  • Read Only인 경우 setter는 없을 수 잇다.
  • getter의 경우 파라미터가 존재하지 않아야 하며, setter의 경우 하나 이상의 파라미터가 존재한다.
  • 프로퍼티의 타입이 boolean인 경우 is로 시작할 수 있다.
  • Serializable 인터페이스를 구현해야한다.

자바 빈즈 컨벤션의 각 항목에 대한 의미

  • 기본생성자를 사용함으로써 다른 프로그램에서 객체 생성시 필요한 데이터만 할당하여 사용할 수 있다.
  • 만약 기본생성자가 아닌 인자를 필요로 하는 생성자를 사용할 경우, 해당 Bean을 사용하는 어플리케이션에서는 클래스 생성시 전달되는 인자의 갯수와 필드의 타입을 알아야한다.
  • 프로퍼티의 접근지정자를 private로 설정하고 getter/setter로 접근을 함으로써 캡슐화(Encapsulation)를 지킨다.
  • Serializable 인터페이스를 구현함으로써 네트워크 통신시 데이터를 저장하고 읽을  수 있게된다.

예제

  • 어렵게 생각할 것 없다. 그냥 일정한 형식을 지켜만든 자바 클래스일 뿐이다.
  • 기본생성자를 갖고, private 멤버변수를 getter/setter 메서드를 통해 접근을 할 수 있으면된다.
public class MemberBean implements java.io.Serializable {

	private String id;
	private String pw;
	private String name;
	private String birthday;
	private String email;
	
	//public MemberBean() {}
	
	public String getId() { return id; }
	public void setId(String id) { this.id = id; }
	
	public String getPw() { return pw; }
	public void setPw(String pw) { this.pw = pw; }
	
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	
	public String getBirthday() { return birthday; }
	public void setBirthday(String birthday) { this.birthday = birthday; }
	
	public String getEmail() { return email; }
	public void setEmail(String email) { this.email = email; }
	
}

Java Beans의 사용목적

  • 프로그램의 모듈화(component)를 통해 코드를 재사용하여 프로그램의 작성 시간이 단축되고, 코드의 안정성이 보장되며 유지보수가 쉽다 즉 프로그램의 공통된 로직을 분리해 코드를 재사용함으로써 프로그래밍의 효율을 높이기 위함이다.
  • Builder Tool에서 시각적으로 조작할 수 있다.
  • 어디서나 공통의 Convention을 지켜 모듈화를 시키기 때문에 서로 다른 Builder에서 별도의 문서 없이 쉽고 일관된 방식으로 Java Class를 사용할 수 있다.

장점

  • 자바 빈으로 관리하는 항목 및 메서드는 외부 프로그램에서 접근할 수 있다.
  • 소프트웨어의 구성 요소를 쉽게 재사용할 수 있다.
  • HDD와 같은 persistent storage에 저장할 수 있다.

단점

  • 자바 빈은 변경 가능하므로 불변 객체를 이용할 수 없다.
  • 각 항목에 대해 setter와 getter를 추가하는 boilderplate(상용구)코드가 발생한다.

Boilerplate(보일러 플레이트)

  • 꼭 필요하지만 비슷한 형태로 반복적으로 작성되는 코드를 뜻한다.