11. 자바빈즈란? (JavaBeans)
빈(bean)은 번역하면 '콩'이다. 'Know Beans"라는 숙어를 살펴보면 "무엇이든 알고 있다."라는 뜻이 된다. 특별히 연관성은 없는 이야기지만 빈이란 이렇게 뭐든지 할 수 있는 능력을 가지고 있는 소프트웨어 덩어리라고 생각하면 좋을 듯하다.
JSP에는 좀 더 효율적인 프로그래밍을 할 수 있도록 지원하는 기술들이 있다. 그것들 중 하나가 바로 자바빈즈(Java Beans)를 이용하는 것이다. 특정한 일만을 수행하는 하나의 프로그램을 작성해 두고서 JSP에서 호출해서 사용할 수 있도록 하는 것이다.
이전 포스팅들에서 언급한 것처럼 지금까지 jsp 내에서 사용할 수 있는 여러 가지 기술을 통해 간단하게 JSP 프로그래밍을 할 수 있었다. 하지만 여기에는 다음과 같은 단점이 있다.
첫 번째로 jsp 페이지에 HTML을 제외한 다른 많은 JSP 코드들이 있으므로 jsp 페이지를 이해하기 어려워진다는 점이다. 이런 경우 프로그래머가 작성한 jsp 페이지를 디자이너가 디자인하기에는 복잡하고 어려울 수밖에 없다. 결국 디자이너와 프로그래머가 서로 독립적으로 작업을 하는 것이 아니라 디자이너가 이해하지 못하는 부분을 항상 프로그래머는 설명해주어야 하고 또다시 프로그래머는 디자이너에게 프로그램에서 필요한 부분을 이해시켜야 하는 것이다. 하지만 프로젝트의 능률적인 진행을 위해서는 가능한 독립적으로 작업을 할 수 있어야 한다.
두 번째로 jsp 페이지 내에 작성된 프로그램 코드는 다시 사용하기가 어렵다. 한마디로 코드 조각에 불과하다(snippet: 작은 정보 토막 하나). 프로그램의 성격이 전혀 다르더라도 기본적인 구조는 항상 같을 수밖에 없다. 예를 들어 Database에 연결하는 일, 에러 처리를 위해 로그를 남기도록 하는 일, 사용자의 정보를 관리하는 일 등은 모든 프로그래밍에 있어 반복적으로 이루어지는 일이다. 이런 반복적인 일을 피하기 위해서는 jsp 페이지 내에 있는 반복적인 코드를 따로 작성하여 재사용할 필요가 있다.
이렇게 jsp 페이지가 복잡한 자바 코드로 구성되는 것을 가능한 피하고 jsp 페이지에는 HTML과 같은 쉽고 간단한 코드만을 구성하도록 하는 것이 자바빈즈를 사용하는 목적이다.
자바빈즈는 JSP 안의 수많은 자바코들이 담당했던 일들을 독립적으로 처리하기 위한 부품과도 같다. 이렇게 부품을 만들어 놓고서 JSP에서 간단히 호출하여 사용하자는 것이다. 마치 컴퓨터를 조립하기 위해 필요한 부품을 사서 조립하는 것처럼 말이다. 이렇게 특별한 기능을 수행할 부품을 만들어두게 되면 언제든지 필요할 때마다 재사용할 수가 있는 것이다.
이렇게 JSP 프로그래밍에서는 복잡한 로직을 jsp 페이지 내에 넣지 않고 자바빈즈와 같은 컴포넌트 기술을 이용하여 작성할 수 있게 하여 효율성, 재사용성 등의 측면에서 많은 장점을 가지게 된다.
결국 자바빈즈(JavaBeans)는 자바로 작성된 컴포넌트들을 일반적으로 일컫는 말이다. 이러한 컴포넌트들을 하나하나 개별적으로 부를 때는 그냥 '빈(bean)'이라고 말한다. 알고 보면 어려운 용어가 아니며 이를 이용하는 것도 그리 어렵지 않다.
■ 컴포넌트
부품을 다른 말로 컴포넌트라고 한다. 이렇게 부품을 만들어 놓으면 필요한 곳에 그 부품을 이용해 제품을 만들 수 있듯이 소프트웨어를 작성하는 것도 이와 비슷한 원리로 컴포넌트를 만들어 재사용하게 된다.
■ 빈≒클래스
자바에서 프로그래밍을 하는 기본 단위를 '클래스'라고 표현한다. 모든 자바 프로그래밍은 이러한 클래스를 만들어가는 과정이라고 말할 수 있다. '빈'이라는 것도 자바의 클래스이다. 결국 빈을 만드는 과정은 간단한 자바 프로그래밍이라고 할 수 있다.
'IT || 개발공부' 카테고리의 다른 글
[Java] 빈을 이용한 프로그래밍 (자바빈즈 / 자바 매개변수) (0) | 2023.02.15 |
---|---|
[Java] 자바빈즈 만들기 (자바빈즈 작성 방법 / 접근제한자 / 자바 구조) (0) | 2023.02.11 |
[Servlet] 서블릿의 라이프 사이클 (get / post 방식) (0) | 2023.02.07 |
[Servlet] 서블릿이란? (개념) (0) | 2023.02.04 |
[Java] Java 기초 문법 (문법/구조/개념/변수) (0) | 2023.02.04 |
댓글