Java Bean

DTO(Data Transfer Object)

DTO는 계층 간 데이터 교환을 위해 사용하는 객체다. 여기서 계층은 View-Controller-Service-DAO와 같은 계층을 의미

데이터를 담을 private 속성과 그 속성에 접근할 수 있는 Getter, Setter 메소드로 구성되어있다.

VO(Value Object)와 혼용되어 쓰이나, VO는 내부 속성값을 변경할 수 없는(imuutable) Read-Only의 의미적 특성을 가진 객체이다. 즉, 변경없이 값으로 취급할 객체를 말한다.

JavaBean(=Bean) 이란?

반복적인 작업을 효율적으로 하기 위해서 사용한다.

Bean 이란 JAVA 언어의 데이터(속성)과 기능(메소드)로 이루어진 클래스이다.

  • Default 생성자 : 파라미터가 없는 Default 생성자를 갖고 있어야한다.

  • Property : 자바빈이 노출하는 이름을 가진 속성을 Property라고 하며, Property는 set으로 시작하는 수정자 메소드(setter)와 get으로 시작하는 접근자 메소드(getter)를 이용해 수정 또는 조회할 수 있다.

DTO와 Java Beans의 관계에 대해선 DTO의 형식으로 Java Beans를 따르고 있다고 생각하면 된다.

Spring에서 지칭하는 Bean이란, Spring의 IoC Container(=DI Container)를 통해 관리(생성, 제어)되는 객체를 말하며, 이는 Spring IoC Container에서 자세히 볼 수 있다.

Bean 만들기

빈을 만든다는 것은 데이터 객체를 만들기 위한 클래스를 만드는 것이다. ( getter, setter )

package example;

public class Student {

    private String name;
    private int age;
    private int grade;


    public Student() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

}

Bean 사용하기

관련 액션 태그(useBean, getProperty, setProperty)로 주로 데이터를 업데이트하고, 얻어오는 역할을 한다.

useBean

특정 Bean을 사용한다고 명시할 때 사용한다.

<jsp:useBean id = "빈이름" class="패키지명을 포함한 클래스명" scope="스코프 범위"/>
<jsp:useBean id = "student" class="example.Student" scope="page"/>
  • Scope 범위

scope

설명

page

생성된 페이지 내에서만 사용 가능

request

요청된 페이지 내에서만 사용 가능

session

웹 브라우저 생명주기와 동일하게 사용 가능

application

웹 어플리케이션 생명주기와 동일하게 사용가능

setProperty

데이터 값을 설정할 때 사용한다.(setter)

<jsp:setProperty name="빈 이름" property="속성 이름" value ="속성 값" />
<jsp:setProperty name="student" property="name" value ="홍길동" />

getProperty

데이터 값을 가져올 때 사용한다.(getter)

<jsp:getProperty name="빈 이름" property="속성 이름" />
<jsp:getProperty name="student" property="name" />

예제

  • Java Class

package example;

public class Student {

    private String name;
    private int age;
    private int grade;


    public Student() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

}
  • jsp로 구현하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="student" class="example.Student" scope="page" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <jsp:setProperty name="student" property="name" value="박서"/>
    <jsp:setProperty name="student" property="age" value="13"/>
    <jsp:setProperty name="student" property="grade" value="6"/>

    이름  : <jsp:getProperty name="student" property="name" /><br />
    나이  : <jsp:getProperty name="student" property="age" /><br />
    학년  : <jsp:getProperty name="student" property="grade" /><br />

</body>
</html>

Last updated