leexx
처음 배우는 마음으로
leexx
전체 방문자
오늘
어제
  • 분류 전체보기 (68)
    • 막개발글 (12)
    • 자바스크립트 JavaScript (17)
    • 우아한테크코스 (3)
      • 프리코스 (3)
    • 타입스크립트 TypeScript (2)
    • 리액트 React (9)
      • 리액트 React (4)
      • ReactQuery (3)
      • ReduxToolkit (1)
    • 스프링 Spring (2)
      • 전체 글 (2)
    • 코틀린 Kotlin (4)
    • 자바 Java (9)
    • 파이썬 Python (3)
      • Selenium (2)
    • SQL (1)
    • 깃허브 GitHub (1)
    • 알고리즘 Algorithm (5)
    • 일상글 (0)

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
leexx

처음 배우는 마음으로

자바 Java

Java Bean

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 을 하는 이유
    • 저장하고, 접근하고, 네트워크를 통해서 주고받을 수 있도록 하기 위함

참고 자료

  • Bean 이름의 유래 https://stackoverflow.com/questions/18609030/why-java-beans-are-called-beans
  • Java Bean 이란
    • https://www.geeksforgeeks.org/javabean-class-java/
      https://imasoftwareengineer.tistory.com/101
  • Class 와 Interface 외에도 Java Bean 이 필요한 이유 https://stackoverflow.com/questions/1727603/places-where-javabeans-are-used
  • Serialization (직렬화) 이란 http://prinavtech.blogspot.com/2017/04/java-serialization-and-deserialization.html

'자바 Java' 카테고리의 다른 글

왜 자바 애플릿은 지원이 종료되었을까  (0) 2023.09.22
Java 의 역사와 특징  (0) 2023.09.22
[자바의정석] 배열  (0) 2023.02.12
[자바의정석] 자료형  (0) 2023.02.10
[자바의정석] 자바개발환경 구축하기  (0) 2023.02.09
    '자바 Java' 카테고리의 다른 글
    • Java 의 역사와 특징
    • [자바의정석] 배열
    • [자바의정석] 자료형
    • [자바의정석] 자바개발환경 구축하기
    leexx
    leexx

    티스토리툴바