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 이므로, 누가 코드를 읽더라도 문서나 메뉴얼 없이 일관성 있게 코드를 이해할 수 있다.
- 직렬화 (Serialization) 를 잘 할 수 있다.
- Java Bean 사용 예시
- Servlet 의 경우에도, session 의 데이터를 직렬화해야 하는데, 이 경우 Java Bean 을 사용한다.
Serialization (직렬화) 이란
- Serialization 이란
- 객체의 내용을 바이트 단위로 변환하는 것
- Serialization 을 하는 이유
- 저장하고, 접근하고, 네트워크를 통해서 주고받을 수 있도록 하기 위함
참고 자료
- Bean 이름의 유래 https://stackoverflow.com/questions/18609030/why-java-beans-are-called-beans
- Java Bean 이란
- 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 |